diff --git a/data/g3d/test.g3dj b/data/g3d/test.g3dj index 997a15bd..143395e3 100644 --- a/data/g3d/test.g3dj +++ b/data/g3d/test.g3dj @@ -1,4748 +1,4748 @@ -{ - "version": [ 0, 1], - "id": "", - "meshes": [ - { - "attributes": ["POSITION"], - "vertices": [ - -44.509998, 15.000000, -48.078999, - -44.509998, 0.000000, -48.078999, - -43.915001, 15.000000, -52.787998, - -43.915001, 0.000000, -52.787998, - -41.426998, 15.000000, -54.946999, - -41.426998, 0.000000, -54.946999, - -39.555000, 15.000000, -52.331001, - -39.555000, 0.000000, -52.331001, - -27.945999, 15.000000, -62.484001, - -27.945999, 0.000000, -62.484001, - -27.465000, 15.000000, -65.924004, - -27.465000, 0.000000, -65.924004, - -25.465000, 15.000000, -67.649002, - -25.465000, 0.000000, -67.649002, - -35.355000, 15.000000, -80.039001, - -35.355000, 0.000000, -80.039001, - -38.505001, 15.000000, -80.440002, - -38.505001, 0.000000, -80.440002, - -74.762001, 15.000000, -84.570000, - -74.762001, 0.000000, -84.570000, - -75.042999, 15.000000, -82.355003, - -75.042999, 0.000000, -82.355003, - -139.567001, 15.000000, -81.752998, - -139.567001, 0.000000, -81.752998, - -144.876007, 15.000000, -67.615997, - -144.876007, 0.000000, -67.615997, - -150.720993, 15.000000, -56.105000, - -150.720993, 0.000000, -56.105000, - -156.759003, 15.000000, -44.205002, - -156.759003, 0.000000, -44.205002, - -158.550995, 15.000000, -46.576000, - -158.550995, 0.000000, -46.576000, - -160.832001, 15.000000, -41.756001, - -160.832001, 0.000000, -41.756001, - -179.602005, 15.000000, -2.182000, - -179.602005, 0.000000, -2.182000, - -152.699997, 15.000000, 8.160000, - -152.699997, 0.000000, 8.160000, - -150.587006, 15.000000, 2.984000, - -150.587006, 0.000000, 2.984000, - -148.065994, 15.000000, 3.930000, - -148.065994, 0.000000, 3.930000, - -150.292999, 15.000000, 9.084000, - -150.292999, 0.000000, 9.084000, - -144.227997, 15.000000, 11.388000, - -144.227997, 0.000000, 11.388000, - -137.654007, 15.000000, 13.893000, - -137.654007, 0.000000, 13.893000, - -137.279999, 15.000000, 13.013000, - -137.279999, 0.000000, 13.013000, - -136.136002, 15.000000, 14.238000, - -136.136002, 0.000000, 14.238000, - -134.585007, 15.000000, 15.095000, - -134.585007, 0.000000, 15.095000, - -132.806000, 15.000000, 15.496000, - -132.806000, 0.000000, 15.496000, - -130.725998, 15.000000, 15.507000, - -130.725998, 0.000000, 15.507000, - -129.362000, 15.000000, 15.173000, - -129.362000, 0.000000, 15.173000, - -127.764000, 15.000000, 14.483000, - -127.764000, 0.000000, 14.483000, - -126.607002, 15.000000, 13.693000, - -126.607002, 0.000000, 13.693000, - -125.651001, 15.000000, 12.590000, - -125.651001, 0.000000, 12.590000, - -125.102997, 15.000000, 11.399000, - -125.102997, 0.000000, 11.399000, - -124.420998, 15.000000, 12.023000, - -124.420998, 0.000000, 12.023000, - -90.463997, 15.000000, -14.816000, - -90.463997, 0.000000, -14.816000, - -90.189003, 15.000000, -14.416000, - -90.189003, 0.000000, -14.416000, - -82.660004, 15.000000, -20.271000, - -82.660004, 0.000000, -20.271000, - -84.825996, 15.000000, -22.931999, - -84.825996, 0.000000, -22.931999, - -79.911003, 15.000000, -26.705000, - -79.911003, 0.000000, -26.705000, - -75.846001, 15.000000, -26.049000, - -75.846001, 0.000000, -26.049000, - -74.348000, 15.000000, -23.677000, - -74.348000, 0.000000, -23.677000, - -62.124001, 15.000000, -33.741001, - -62.124001, 0.000000, -33.741001, - -61.467999, 15.000000, -38.426998, - -61.467999, 0.000000, -38.426998, - -59.061001, 15.000000, -40.554001, - -59.061001, 0.000000, -40.554001, - -57.127998, 15.000000, -37.915001, - -57.127998, 0.000000, -37.915001, - -158.798996, 27.000000, 128.639008, - -158.798996, 0.000000, 128.639008, - -158.457993, 27.000000, 128.115997, - -158.457993, 0.000000, 128.115997, - -175.410004, 27.000000, 116.528000, - -175.410004, 0.000000, 116.528000, - -188.804001, 27.000000, 136.298004, - -188.804001, 0.000000, 136.298004, - -172.761002, 27.000000, 147.139999, - -172.761002, 0.000000, 147.139999, - -167.011002, 27.000000, 139.380997, - -167.011002, 0.000000, 139.380997, - -170.013000, 27.000000, 137.367004, - -170.013000, 0.000000, 137.367004, - -167.345001, 27.000000, 133.192001, - -167.345001, 0.000000, 133.192001, - -164.195007, 27.000000, 135.417999, - -164.195007, 0.000000, 135.417999, - -108.244003, 10.000000, 115.526001, - -108.244003, 0.000000, 115.526001, - -119.900002, 10.000000, 132.623993, - -119.900002, 0.000000, 132.623993, - -124.133003, 10.000000, 138.925003, - -124.133003, 0.000000, 138.925003, - -107.628998, 10.000000, 150.001007, - -107.628998, 0.000000, 150.001007, - -93.559998, 10.000000, 159.440002, - -93.559998, 0.000000, 159.440002, - -82.981003, 10.000000, 139.481995, - -82.981003, 0.000000, 139.481995, - 27.530001, 20.000000, 83.933998, - 27.530001, 0.000000, 83.933998, - 38.791000, 20.000000, 91.336998, - 38.791000, 0.000000, 91.336998, - 49.911999, 20.000000, 99.563004, - 49.911999, 0.000000, 99.563004, - 63.660000, 20.000000, 111.796997, - 63.660000, 0.000000, 111.796997, - 74.139000, 20.000000, 121.860001, - 74.139000, 0.000000, 121.860001, - 102.873001, 20.000000, 91.805000, - 102.873001, 0.000000, 91.805000, - 105.086998, 20.000000, 81.485001, - 105.086998, 0.000000, 81.485001, - 89.098000, 20.000000, 65.856003, - 89.098000, 0.000000, 65.856003, - 55.255001, 20.000000, 49.091999, - 55.255001, 0.000000, 49.091999, - 47.458000, 20.000000, 50.283001, - 47.458000, 0.000000, 50.283001, - -15.889000, 29.500000, -22.754000, - -15.889000, 0.000000, -22.754000, - -7.784000, 29.500000, -18.846001, - -7.784000, 0.000000, -18.846001, - 0.635000, 29.500000, -20.983999, - 0.635000, 0.000000, -20.983999, - 5.837000, 29.500000, -28.063000, - 5.837000, 0.000000, -28.063000, - 5.202000, 29.500000, -37.103001, - 5.202000, 0.000000, -37.103001, - -0.977000, 29.500000, -43.391998, - -0.977000, 0.000000, -43.391998, - -9.871000, 29.500000, -44.237999, - -9.871000, 0.000000, -44.237999, - -16.959000, 29.500000, -39.439999, - -16.959000, 0.000000, -39.439999, - -19.433001, 29.500000, -30.346001, - -19.433001, 0.000000, -30.346001, - 1.350000, 24.500000, -5.187000, - 1.350000, 0.000000, -5.187000, - 26.280001, 24.500000, 4.119000, - 26.280001, 0.000000, 4.119000, - 26.500000, 24.500000, 3.652000, - 26.500000, 0.000000, 3.652000, - 41.431999, 24.500000, -26.459999, - 41.431999, 0.000000, -26.459999, - 51.991001, 24.500000, -51.662998, - 51.991001, 0.000000, -51.662998, - 21.504999, 24.500000, -63.831001, - 21.504999, 0.000000, -63.831001, - -3.404000, 24.500000, -49.848999, - -3.404000, 0.000000, -49.848999, - -9.750000, 24.500000, -44.883999, - -9.750000, 0.000000, -44.883999, - -10.747000, 24.500000, -46.174999, - -10.747000, 0.000000, -46.174999, - -12.693000, 24.500000, -48.702000, - -12.693000, 0.000000, -48.702000, - -27.157000, 24.500000, -37.470001, - -27.157000, 0.000000, -37.470001, - -25.111000, 24.500000, -34.854000, - -25.111000, 0.000000, -34.854000, - -24.141001, 24.500000, -33.606998, - -24.141001, 0.000000, -33.606998, - -55.362999, 24.500000, -9.161000, - -55.362999, 0.000000, -9.161000, - -50.681999, 24.500000, -3.017000, - -50.681999, 0.000000, -3.017000, - -21.212000, 24.500000, 10.876000, - -21.212000, 0.000000, 10.876000, - -9.824000, 24.500000, 1.425000, - -9.824000, 0.000000, 1.425000, - -10.954000, 24.500000, -2.716000, - -10.954000, 0.000000, -2.716000, - -7.691000, 24.500000, -4.753000, - -7.691000, 0.000000, -4.753000, - -4.815000, 24.500000, -7.280000, - -4.815000, 0.000000, -7.280000, - -15.889000, 24.500000, -22.754000, - -19.433001, 24.500000, -30.346001, - -16.959000, 24.500000, -39.439999, - -9.871000, 24.500000, -44.237999, - -0.977000, 24.500000, -43.391998, - 5.202000, 24.500000, -37.103001, - 5.837000, 24.500000, -28.063000, - 0.635000, 24.500000, -20.983999, - -7.784000, 24.500000, -18.846001, - 159.667007, 10.000000, -8.349000, - 159.667007, 0.000000, -8.349000, - 164.889008, 10.000000, -15.674000, - 164.889008, 0.000000, -15.674000, - 165.330994, 10.000000, -16.275000, - 165.330994, 0.000000, -16.275000, - 164.307999, 10.000000, -16.976000, - 164.307999, 0.000000, -16.976000, - 165.604996, 10.000000, -18.934999, - 165.604996, 0.000000, -18.934999, - 166.701996, 10.000000, -18.267000, - 166.701996, 0.000000, -18.267000, - 170.921005, 10.000000, -24.212000, - 170.921005, 0.000000, -24.212000, - 168.641006, 10.000000, -24.802000, - 168.641006, 0.000000, -24.802000, - 166.005997, 10.000000, -25.481001, - 166.005997, 0.000000, -25.481001, - 155.675003, 10.000000, -11.699000, - 155.675003, 0.000000, -11.699000, - 157.681000, 10.000000, -10.019000, - 157.681000, 0.000000, -10.019000, - -162.149002, 15.000000, -42.457001, - -162.149002, 0.000000, -42.457001, - -152.927994, 15.000000, -57.273998, - -152.927994, 0.000000, -57.273998, - -155.468994, 15.000000, -58.620998, - -155.468994, 0.000000, -58.620998, - -146.869003, 15.000000, -74.405998, - -146.869003, 0.000000, -74.405998, - -151.496994, 15.000000, -76.944000, - -151.496994, 0.000000, -76.944000, - -155.194000, 15.000000, -78.982002, - -155.194000, 0.000000, -78.982002, - -170.087006, 15.000000, -73.626999, - -170.087006, 0.000000, -73.626999, - -184.764999, 15.000000, -66.792000, - -184.764999, 0.000000, -66.792000, - -187.132004, 15.000000, -65.690002, - -187.132004, 0.000000, -65.690002, - -199.376007, 15.000000, -58.499001, - -199.376007, 0.000000, -58.499001, - -187.626999, 15.000000, -48.324001, - -187.626999, 0.000000, -48.324001, - -167.231003, 15.000000, -36.847000, - -167.231003, 0.000000, -36.847000, - -163.848007, 15.000000, -43.415001, - -163.848007, 0.000000, -43.415001, - -69.639999, 7.500000, -94.532997, - -69.639999, 0.000000, -94.532997, - -61.054001, 7.500000, -93.910004, - -61.054001, 0.000000, -93.910004, - -60.036999, 7.500000, -104.318001, - -60.036999, 0.000000, -104.318001, - -69.057999, 7.500000, -104.852997, - -69.057999, 0.000000, -104.852997, - -71.170998, 7.500000, -104.974998, - -71.170998, 0.000000, -104.974998, - -93.044998, 7.500000, -106.266998, - -93.044998, 0.000000, -106.266998, - -94.676003, 7.500000, -106.366997, - -94.676003, 0.000000, -106.366997, - -94.556000, 7.500000, -96.314003, - -94.556000, 0.000000, -96.314003, - -152.199005, 10.000000, -187.910995, - -152.199005, 0.000000, -187.910995, - -157.160004, 10.000000, -181.520996, - -157.160004, 0.000000, -181.520996, - -142.154999, 10.000000, -169.865005, - -142.154999, 0.000000, -169.865005, - -137.192993, 10.000000, -176.266006, - -137.192993, 0.000000, -176.266006, - -185.574005, 5.000000, -176.634003, - -185.574005, 0.000000, -176.634003, - -171.177002, 5.000000, -161.817001, - -171.177002, 0.000000, -161.817001, - -165.518997, 5.000000, -167.315994, - -165.518997, 0.000000, -167.315994, - -164.998001, 5.000000, -167.817001, - -164.998001, 0.000000, -167.817001, - -179.388000, 5.000000, -182.634003, - -179.388000, 0.000000, -182.634003, - -197.972000, 10.000000, -10.887000, - -197.972000, 0.000000, -10.887000, - -191.117004, 10.000000, -6.423000, - -191.117004, 0.000000, -6.423000, - -178.117996, 10.000000, -32.037998, - -178.117996, 0.000000, -32.037998, - -181.388000, 10.000000, -33.819000, - -181.388000, 0.000000, -33.819000, - -187.158997, 10.000000, -23.177000, - -187.158997, 0.000000, -23.177000, - -189.699997, 10.000000, -24.613001, - -189.699997, 0.000000, -24.613001, - -190.481995, 10.000000, -23.177000, - -190.481995, 0.000000, -23.177000, - -194.735001, 10.000000, -167.727997, - -194.735001, 0.000000, -167.727997, - -180.345001, 10.000000, -152.910995, - -180.345001, 0.000000, -152.910995, - -171.177002, 10.000000, -161.817001, - -185.574005, 10.000000, -176.634003, - 93.318001, 5.000000, 113.432999, - 93.318001, 0.000000, 113.432999, - 80.539001, 5.000000, 127.113998, - 80.539001, 0.000000, 127.113998, - 85.982002, 5.000000, 132.190002, - 85.982002, 0.000000, 132.190002, - 98.767998, 5.000000, 118.510002, - 98.767998, 0.000000, 118.510002, - -15.040000, 44.000000, 62.573002, - -15.040000, 41.000000, 62.573002, - -6.106000, 44.000000, 41.154999, - -6.106000, 41.000000, 41.154999, - -19.841000, 44.000000, 35.422001, - -19.841000, 41.000000, 35.422001, - -28.782000, 44.000000, 56.840000, - -28.782000, 41.000000, 56.840000, - -19.781000, 41.000000, 34.341999, - -19.781000, 0.000000, 34.341999, - -24.101000, 41.000000, 44.827999, - -24.101000, 0.000000, 44.827999, - -29.209999, 41.000000, 57.217999, - -29.209999, 0.000000, 57.217999, - -14.913000, 41.000000, 63.118000, - -14.913000, 0.000000, 63.118000, - -5.484000, 41.000000, 40.230999, - -5.484000, 0.000000, 40.230999, - -16.906000, 41.000000, 35.521999, - -16.906000, 0.000000, 35.521999, - -19.781000, 7.500000, 34.341999, - -16.906000, 7.500000, 35.521999, - -16.163000, 7.500000, 33.719002, - -16.163000, 0.000000, 33.719002, - -19.039000, 7.500000, 32.539001, - -19.039000, 0.000000, 32.539001, - -34.405998, 22.000000, -142.623993, - -34.405998, 0.000000, -142.623993, - -40.931999, 22.000000, -130.869003, - -40.931999, 0.000000, -130.869003, - -41.527000, 22.000000, -129.800003, - -41.527000, 0.000000, -129.800003, - -29.812000, 22.000000, -123.288002, - -29.812000, 0.000000, -123.288002, - -20.289000, 22.000000, -118.011002, - -20.289000, 0.000000, -118.011002, - -7.838000, 22.000000, -111.098000, - -7.838000, 0.000000, -111.098000, - 0.635000, 22.000000, -106.400002, - 0.635000, 0.000000, -106.400002, - 3.009000, 22.000000, -110.664001, - 3.009000, 0.000000, -110.664001, - 3.316000, 22.000000, -111.220001, - 3.316000, 0.000000, -111.220001, - 7.750000, 22.000000, -119.212997, - 7.750000, 0.000000, -119.212997, - -22.730000, 22.000000, -136.134003, - -22.730000, 0.000000, -136.134003, - -30.728001, 22.000000, -140.576004, - -30.728001, 0.000000, -140.576004, - 3.009000, 20.000000, -110.664001, - 0.635000, 20.000000, -106.400002, - -7.838000, 20.000000, -111.098000, - -20.289000, 20.000000, -118.011002, - -29.812000, 20.000000, -123.288002, - -41.527000, 20.000000, -129.800003, - -42.155998, 20.000000, -130.145004, - -42.155998, 0.000000, -130.145004, - -53.491001, 20.000000, -109.718002, - -53.491001, 0.000000, -109.718002, - -41.085999, 20.000000, -102.827003, - -41.085999, 0.000000, -102.827003, - -18.049000, 20.000000, -90.046997, - -18.049000, 0.000000, -90.046997, - -19.039000, 20.000000, -88.254997, - -19.039000, 0.000000, -88.254997, - -7.965000, 20.000000, -82.110001, - -7.965000, 0.000000, -82.110001, - 6.733000, 20.000000, -108.603996, - 6.733000, 0.000000, -108.603996, - -69.753998, 15.000000, 42.847000, - -69.753998, 0.000000, 42.847000, - -64.824997, 15.000000, 28.565001, - -64.824997, 0.000000, 28.565001, - -66.872002, 15.000000, 27.863001, - -66.872002, 0.000000, 27.863001, - -69.038002, 15.000000, 27.106001, - -69.038002, 0.000000, 27.106001, - -74.689003, 15.000000, 25.158001, - -74.689003, 0.000000, 25.158001, - -79.683998, 15.000000, 39.318001, - -79.683998, 0.000000, 39.318001, - -97.544998, 10.000000, 199.057999, - -97.544998, 0.000000, 199.057999, - -108.097000, 10.000000, 184.408997, - -108.097000, 0.000000, 184.408997, - -110.724998, 10.000000, 185.867004, - -110.724998, 0.000000, 185.867004, - -112.136002, 10.000000, 183.261993, - -112.136002, 0.000000, 183.261993, - -120.067001, 10.000000, 191.856003, - -120.067001, 0.000000, 191.856003, - -107.148003, 10.000000, 209.197998, - -107.148003, 0.000000, 209.197998, - -99.565002, 10.000000, 201.595993, - -99.565002, 0.000000, 201.595993, - -99.110001, 10.000000, 201.149994, - -99.110001, 0.000000, 201.149994, - -177.675995, 18.000000, 38.283001, - -177.675995, 0.000000, 38.283001, - -183.380997, 18.000000, 31.270000, - -183.380997, 0.000000, 31.270000, - -184.718002, 18.000000, 32.728001, - -184.718002, 0.000000, 32.728001, - -192.809006, 18.000000, 41.533001, - -192.809006, 0.000000, 41.533001, - -194.360992, 18.000000, 40.242001, - -194.360992, 0.000000, 40.242001, - -202.438995, 18.000000, 50.683998, - -202.438995, 0.000000, 50.683998, - -194.313995, 18.000000, 57.185001, - -194.313995, 0.000000, 57.185001, - -187.647003, 18.000000, 48.747002, - -187.647003, 0.000000, 48.747002, - -178.880005, 18.000000, 39.551998, - -178.880005, 0.000000, 39.551998, - -194.313995, 28.000000, 57.185001, - -199.268997, 28.000000, 63.708000, - -199.268997, 0.000000, 63.708000, - -209.701004, 28.000000, 78.445999, - -209.701004, 0.000000, 78.445999, - -199.403000, 28.000000, 87.619003, - -199.403000, 0.000000, 87.619003, - -182.565002, 28.000000, 66.346001, - -182.565002, 0.000000, 66.346001, - -169.873001, 28.000000, 50.293999, - -169.873001, 0.000000, 50.293999, - -168.701996, 28.000000, 48.813999, - -168.701996, 0.000000, 48.813999, - -177.675995, 28.000000, 38.283001, - -178.880005, 28.000000, 39.551998, - -187.647003, 28.000000, 48.747002, - -183.380997, 21.000000, 31.270000, - -189.947006, 21.000000, 24.357000, - -189.947006, 0.000000, 24.357000, - -199.796997, 21.000000, 15.462000, - -199.796997, 0.000000, 15.462000, - -212.048004, 21.000000, 6.679000, - -212.048004, 0.000000, 6.679000, - -212.931000, 21.000000, 8.327000, - -212.931000, 0.000000, 8.327000, - -214.421997, 21.000000, 11.110000, - -214.421997, 0.000000, 11.110000, - -217.457993, 21.000000, 16.709000, - -217.457993, 0.000000, 16.709000, - -225.395004, 21.000000, 30.613001, - -225.395004, 0.000000, 30.613001, - -232.804993, 21.000000, 41.366001, - -232.804993, 0.000000, 41.366001, - -239.806000, 21.000000, 50.951000, - -239.806000, 0.000000, 50.951000, - -240.354004, 21.000000, 51.863998, - -240.354004, 0.000000, 51.863998, - -222.513000, 21.000000, 67.415001, - -222.513000, 0.000000, 67.415001, - -209.701004, 21.000000, 78.445999, - -199.268997, 21.000000, 63.708000, - -194.313995, 21.000000, 57.185001, - -202.438995, 21.000000, 50.683998, - -194.360992, 21.000000, 40.242001, - -192.809006, 21.000000, 41.533001, - -184.718002, 21.000000, 32.728001, - -182.718994, 10.000000, -2.827000, - -182.718994, 0.000000, -2.827000, - -170.735001, 10.000000, -28.041000, - -170.735001, 0.000000, -28.041000, - -190.429001, 10.000000, -38.706001, - -190.429001, 0.000000, -38.706001, - -197.584000, 10.000000, -27.372999, - -197.584000, 0.000000, -27.372999, - -170.975998, 7.500000, -118.345001, - -170.975998, 0.000000, -118.345001, - -180.845993, 7.500000, -110.307999, - -180.845993, 0.000000, -110.307999, - -173.009003, 7.500000, -96.057999, - -173.009003, 0.000000, -96.057999, - -161.681000, 7.500000, -101.045998, - -161.681000, 0.000000, -101.045998, - -178.158005, 7.500000, -93.920998, - -178.158005, 0.000000, -93.920998, - -174.011993, 7.500000, -84.347000, - -174.011993, 0.000000, -84.347000, - -157.421005, 7.500000, -90.481003, - -157.421005, 0.000000, -90.481003, - -191.651993, 7.500000, -76.710999, - -191.651993, 0.000000, -76.710999, - -179.375000, 7.500000, -96.725998, - -179.375000, 0.000000, -96.725998, - -197.014999, 7.500000, -89.089996, - -197.014999, 0.000000, -89.089996, - -80.680000, 15.000000, 79.025002, - -80.680000, 0.000000, 79.025002, - -83.989998, 15.000000, 77.556000, - -83.989998, 0.000000, 77.556000, - -92.958000, 15.000000, 92.818001, - -92.958000, 0.000000, 92.818001, - -82.874001, 15.000000, 102.703003, - -82.874001, 0.000000, 102.703003, - -73.905998, 15.000000, 93.508003, - -73.905998, 0.000000, 93.508003, - -72.615997, 15.000000, 90.824997, - -72.615997, 0.000000, 90.824997, - -81.958000, 15.000000, 81.608002, - -81.958000, 0.000000, 81.608002, - -53.563999, 7.500000, 113.055000, - -53.563999, 0.000000, 113.055000, - -48.997002, 7.500000, 114.713997, - -48.997002, 0.000000, 114.713997, - -46.876999, 7.500000, 112.253998, - -46.876999, 0.000000, 112.253998, - -40.931999, 7.500000, 115.125000, - -40.931999, 0.000000, 115.125000, - -34.271999, 7.500000, 107.889999, - -34.271999, 0.000000, 107.889999, - -30.306999, 7.500000, 98.349998, - -30.306999, 0.000000, 98.349998, - -31.209000, 7.500000, 97.871002, - -31.209000, 0.000000, 97.871002, - -28.722000, 7.500000, 92.338997, - -28.722000, 0.000000, 92.338997, - -42.283001, 7.500000, 86.683998, - -42.283001, 0.000000, 86.683998, - -45.827000, 7.500000, 94.364998, - -45.827000, 0.000000, 94.364998, - -47.372002, 7.500000, 97.972000, - -47.372002, 0.000000, 97.972000, - -52.334000, 7.500000, 109.526001, - -52.334000, 0.000000, 109.526001, - -54.146000, 7.500000, 112.498001, - -54.146000, 0.000000, 112.498001, - -143.839996, 10.000000, 125.377998, - -143.839996, 0.000000, 125.377998, - -141.031006, 10.000000, 127.315002, - -141.031006, 0.000000, 127.315002, - -138.557007, 10.000000, 129.007004, - -138.557007, 0.000000, 129.007004, - -135.854996, 10.000000, 130.865997, - -135.854996, 0.000000, 130.865997, - -111.834999, 10.000000, 112.231003, - -111.834999, 0.000000, 112.231003, - -119.994003, 10.000000, 104.750999, - -119.994003, 0.000000, 104.750999, - -122.821999, 10.000000, 102.156998, - -122.821999, 0.000000, 102.156998, - -126.432999, 10.000000, 98.839996, - -126.432999, 0.000000, 98.839996, - -139.934998, 10.000000, 86.449997, - -139.934998, 0.000000, 86.449997, - -141.091003, 10.000000, 85.392998, - -141.091003, 0.000000, 85.392998, - -145.337997, 10.000000, 85.614998, - -145.337997, 0.000000, 85.614998, - -164.535995, 10.000000, 107.968002, - -164.535995, 0.000000, 107.968002, - -164.147995, 10.000000, 111.406998, - -164.147995, 0.000000, 111.406998, - -54.186001, 15.000000, 129.552002, - -54.186001, 0.000000, 129.552002, - -36.205002, 15.000000, 146.360992, - -36.205002, 0.000000, 146.360992, - -35.616001, 15.000000, 145.792999, - -35.616001, 0.000000, 145.792999, - -24.863001, 15.000000, 135.485001, - -24.863001, 0.000000, 135.485001, - -26.181000, 15.000000, 134.205002, - -26.181000, 0.000000, 134.205002, - -25.511999, 15.000000, 133.559998, - -25.511999, 0.000000, 133.559998, - -28.962000, 15.000000, 130.108994, - -28.962000, 0.000000, 130.108994, - -29.691000, 15.000000, 130.776993, - -29.691000, 0.000000, 130.776993, - -31.577000, 15.000000, 128.951004, - -31.577000, 0.000000, 128.951004, - -29.457001, 15.000000, 126.334999, - -29.457001, 0.000000, 126.334999, - -26.007000, 15.000000, 121.514999, - -26.007000, 0.000000, 121.514999, - -25.518999, 15.000000, 121.882004, - -25.518999, 0.000000, 121.882004, - -22.542999, 15.000000, 117.842003, - -22.542999, 0.000000, 117.842003, - -23.091000, 15.000000, 117.441002, - -23.091000, 0.000000, 117.441002, - -20.370001, 15.000000, 113.644997, - -20.370001, 0.000000, 113.644997, - -34.271999, 15.000000, 107.889999, - -40.931999, 15.000000, 115.125000, - -3.645000, 15.000000, 179.143005, - -3.645000, 0.000000, 179.143005, - 8.064000, 15.000000, 168.858002, - 8.064000, 0.000000, 168.858002, - -16.049999, 15.000000, 143.544998, - -16.049999, 0.000000, 143.544998, - -24.247999, 15.000000, 134.951004, - -24.247999, 0.000000, 134.951004, - -69.198997, 7.500000, 79.771004, - -69.198997, 0.000000, 79.771004, - -79.209000, 7.500000, 76.053001, - -79.209000, 0.000000, 76.053001, - -80.680000, 7.500000, 79.025002, - -81.958000, 7.500000, 81.608002, - -72.615997, 7.500000, 90.824997, - -16.371000, 15.000000, 104.550003, - -16.371000, 0.000000, 104.550003, - -30.306999, 15.000000, 98.349998, - -79.476997, 15.000000, 57.764000, - -79.476997, 0.000000, 57.764000, - -88.417000, 15.000000, 54.914001, - -88.417000, 0.000000, 54.914001, - -96.113998, 15.000000, 71.544998, - -96.113998, 0.000000, 71.544998, - -87.688004, 15.000000, 75.719002, - -87.688004, 0.000000, 75.719002, - -22.235001, 15.000000, 78.068001, - -22.235001, 0.000000, 78.068001, - -28.722000, 15.000000, 92.338997, - -31.209000, 15.000000, 97.871002, - -15.722000, 15.000000, 104.762001, - -15.722000, 0.000000, 104.762001, - -6.748000, 15.000000, 84.424004, - -6.748000, 0.000000, 84.424004, - -43.012001, 15.000000, 69.552002, - -43.012001, 0.000000, 69.552002, - -47.578999, 15.000000, 82.698997, - -47.578999, 0.000000, 82.698997, - -50.575001, 15.000000, 92.773003, - -50.575001, 0.000000, 92.773003, - -45.827000, 15.000000, 94.364998, - -42.283001, 15.000000, 86.683998, - -35.817001, 15.000000, 72.501999, - -35.817001, 0.000000, 72.501999, - -35.409000, 15.000000, 71.278000, - -35.409000, 0.000000, 71.278000, - -41.581001, 15.000000, 68.727997, - -41.581001, 0.000000, 68.727997, - -42.056000, 15.000000, 69.897003, - -42.056000, 0.000000, 69.897003, - -96.862999, 31.200001, 88.888000, - -96.862999, 0.000000, 88.888000, - -92.958000, 31.200001, 92.818001, - -83.989998, 31.200001, 77.556000, - -87.688004, 31.200001, 75.719002, - -96.113998, 31.200001, 71.544998, - -88.417000, 31.200001, 54.914001, - -116.616997, 31.200001, 45.908001, - -116.616997, 0.000000, 45.908001, - -127.810997, 31.200001, 57.686001, - -127.810997, 0.000000, 57.686001, - -62.771999, 10.000000, 181.447998, - -62.771999, 0.000000, 181.447998, - -53.717999, 10.000000, 168.067001, - -53.717999, 0.000000, 168.067001, - -68.141998, 10.000000, 153.317993, - -68.141998, 0.000000, 153.317993, - -77.570999, 10.000000, 170.817001, - -77.570999, 0.000000, 170.817001, - -86.751999, 10.000000, 164.283005, - -86.751999, 0.000000, 164.283005, - -20.704000, 10.000000, 211.235001, - -20.704000, 0.000000, 211.235001, - -12.318000, 10.000000, 202.919998, - -12.318000, 0.000000, 202.919998, - -37.327999, 10.000000, 177.339996, - -37.327999, 0.000000, 177.339996, - -40.717999, 10.000000, 180.490005, - -40.717999, 0.000000, 180.490005, - -51.077000, 10.000000, 170.593994, - -51.077000, 0.000000, 170.593994, - -139.606995, 10.000000, 142.007996, - -139.606995, 0.000000, 142.007996, - -143.578995, 10.000000, 139.225998, - -143.578995, 0.000000, 139.225998, - -146.052994, 10.000000, 137.511002, - -146.052994, 0.000000, 137.511002, - -159.574997, 10.000000, 156.490997, - -159.574997, 0.000000, 156.490997, - -152.485992, 10.000000, 161.600006, - -152.485992, 0.000000, 161.600006, - -147.464005, 10.000000, 154.431000, - -147.464005, 0.000000, 154.431000, - -146.675003, 10.000000, 153.328995, - -146.675003, 0.000000, 153.328995, - -146.261002, 10.000000, 152.684006, - -146.261002, 0.000000, 152.684006, - -142.401993, 10.000000, 146.350006, - -142.401993, 0.000000, 146.350006, - -145.485001, 10.000000, 136.720993, - -145.485001, 0.000000, 136.720993, - -156.156998, 10.000000, 129.039993, - -156.156998, 0.000000, 129.039993, - -156.177002, 10.000000, 129.029007, - -156.177002, 0.000000, 129.029007, - -156.725998, 10.000000, 129.807999, - -156.725998, 0.000000, 129.807999, - -158.136993, 10.000000, 128.783997, - -158.136993, 0.000000, 128.783997, - -158.270996, 10.000000, 128.973007, - -158.270996, 0.000000, 128.973007, - -158.798996, 10.000000, 128.639008, - -164.195007, 10.000000, 135.417999, - -167.011002, 10.000000, 139.380997, - -172.761002, 10.000000, 147.139999, - 134.363007, 15.000000, -18.679001, - 134.363007, 0.000000, -18.679001, - 110.115997, 15.000000, 10.275000, - 110.115997, 0.000000, 10.275000, - 106.638000, 15.000000, 7.180000, - 106.638000, 0.000000, 7.180000, - 91.064003, 15.000000, 25.593000, - 91.064003, 0.000000, 25.593000, - 89.412003, 15.000000, 27.452000, - 89.412003, 0.000000, 27.452000, - 93.859001, 15.000000, 31.504000, - 93.859001, 0.000000, 31.504000, - 93.504997, 15.000000, 31.915001, - 93.504997, 0.000000, 31.915001, - 105.908997, 15.000000, 42.668999, - 105.908997, 0.000000, 42.668999, - 118.147003, 15.000000, 55.827000, - 118.147003, 0.000000, 55.827000, - 128.552002, 15.000000, 56.138000, - 128.552002, 0.000000, 56.138000, - 148.184998, 15.000000, 38.404999, - 148.184998, 0.000000, 38.404999, - 150.123993, 15.000000, 38.493999, - 150.123993, 0.000000, 38.493999, - 154.630997, 15.000000, 34.353001, - 154.630997, 0.000000, 34.353001, - 154.852005, 15.000000, 32.382999, - 154.852005, 0.000000, 32.382999, - 165.216995, 15.000000, 23.021000, - 165.216995, 0.000000, 23.021000, - 165.423996, 15.000000, 13.581000, - 165.423996, 0.000000, 13.581000, - 157.600006, 15.000000, 5.010000, - 157.600006, 0.000000, 5.010000, - 158.054993, 15.000000, 4.498000, - 158.054993, 0.000000, 4.498000, - 64.135002, 15.000000, -42.825001, - 64.135002, 0.000000, -42.825001, - 79.280998, 15.000000, -37.325001, - 79.280998, 0.000000, -37.325001, - 79.474998, 15.000000, -38.027000, - 79.474998, 0.000000, -38.027000, - 84.818001, 15.000000, -36.680000, - 84.818001, 0.000000, -36.680000, - 84.564003, 15.000000, -35.455002, - 84.564003, 0.000000, -35.455002, - 90.100998, 15.000000, -32.750000, - 90.100998, 0.000000, -32.750000, - 97.643997, 15.000000, -44.784000, - 97.643997, 0.000000, -44.784000, - 66.809998, 15.000000, -52.365002, - 66.809998, 0.000000, -52.365002, - 63.419998, 15.000000, -43.159000, - 63.419998, 0.000000, -43.159000, - 111.907997, 15.000000, -41.744999, - 111.907997, 0.000000, -41.744999, - 88.602997, 15.000000, -28.798000, - 88.602997, 0.000000, -28.798000, - 95.203003, 15.000000, -25.158001, - 95.203003, 0.000000, -25.158001, - 98.694000, 15.000000, -30.134001, - 98.694000, 0.000000, -30.134001, - 101.469002, 15.000000, -28.396999, - 101.469002, 0.000000, -28.396999, - 102.078003, 15.000000, -20.527000, - 102.078003, 0.000000, -20.527000, - 102.892998, 15.000000, -21.962999, - 102.892998, 0.000000, -21.962999, - 104.191002, 15.000000, -21.173000, - 104.191002, 0.000000, -21.173000, - 116.970001, 15.000000, -37.236000, - 116.970001, 0.000000, -37.236000, - 117.237000, 15.000000, -37.536999, - 117.237000, 0.000000, -37.536999, - 112.175003, 15.000000, -41.966999, - 112.175003, 0.000000, -41.966999, - 62.375999, 15.000000, -38.951000, - 62.375999, 0.000000, -38.951000, - 60.175999, 15.000000, -34.097000, - 60.175999, 0.000000, -34.097000, - 59.748001, 15.000000, -33.151001, - 59.748001, 0.000000, -33.151001, - 57.133999, 15.000000, -30.011999, - 57.133999, 0.000000, -30.011999, - 57.930000, 15.000000, -29.143000, - 57.930000, 0.000000, -29.143000, - 56.023998, 15.000000, -24.947001, - 56.023998, 0.000000, -24.947001, - 51.102001, 15.000000, -14.082000, - 51.102001, 0.000000, -14.082000, - 46.220001, 15.000000, -3.306000, - 46.220001, 0.000000, -3.306000, - 42.181000, 15.000000, 5.611000, - 42.181000, 0.000000, 5.611000, - 39.881001, 15.000000, 10.676000, - 39.881001, 0.000000, 10.676000, - 35.902000, 15.000000, 19.459000, - 35.902000, 0.000000, 19.459000, - 33.808998, 15.000000, 22.476000, - 33.808998, 0.000000, 22.476000, - 29.329000, 15.000000, 28.931999, - 29.329000, 0.000000, 28.931999, - 30.150999, 15.000000, 29.288000, - 30.150999, 0.000000, 29.288000, - 52.486000, 15.000000, 39.018002, - 52.486000, 0.000000, 39.018002, - 66.716003, 15.000000, 45.207001, - 66.716003, 0.000000, 45.207001, - 68.702003, 15.000000, 43.035999, - 68.702003, 0.000000, 43.035999, - 69.056999, 15.000000, 43.403999, - 69.056999, 0.000000, 43.403999, - 70.581001, 15.000000, 41.723000, - 70.581001, 0.000000, 41.723000, - 72.085999, 15.000000, 40.063999, - 72.085999, 0.000000, 40.063999, - 71.718002, 15.000000, 39.730000, - 71.718002, 0.000000, 39.730000, - 73.737999, 15.000000, 37.526001, - 73.737999, 0.000000, 37.526001, - 74.580002, 15.000000, 38.339001, - 74.580002, 0.000000, 38.339001, - 80.865997, 15.000000, 31.103001, - 80.865997, 0.000000, 31.103001, - 83.125999, 15.000000, 28.497999, - 83.125999, 0.000000, 28.497999, - 87.874001, 15.000000, 23.021000, - 87.874001, 0.000000, 23.021000, - 120.546997, 15.000000, -33.417999, - 120.546997, 0.000000, -33.417999, - -52.132999, 15.000000, 24.691000, - -52.132999, 0.000000, 24.691000, - -50.448002, 15.000000, 23.054001, - -50.448002, 0.000000, 23.054001, - -48.636002, 15.000000, 17.934000, - -48.636002, 0.000000, 17.934000, - -44.389999, 15.000000, 19.625999, - -44.389999, 0.000000, 19.625999, - -41.220001, 15.000000, 11.911000, - -41.220001, 0.000000, 11.911000, - -54.955002, 15.000000, 5.566000, - -54.955002, 0.000000, 5.566000, - -60.605999, 15.000000, 19.358999, - -60.605999, 0.000000, 19.358999, - -60.833000, 15.000000, 19.926001, - -60.833000, 0.000000, 19.926001, - -56.172001, 15.000000, 21.663000, - -56.172001, 0.000000, 21.663000, - -56.786999, 15.000000, 23.021000, - -56.786999, 0.000000, 23.021000, - -62.859001, 15.000000, -4.542000, - -62.859001, 0.000000, -4.542000, - -67.674004, 15.000000, -0.712000, - -67.674004, 0.000000, -0.712000, - -63.421001, 15.000000, 5.522000, - -63.421001, 0.000000, 5.522000, - -67.875000, 15.000000, 9.307000, - -67.875000, 0.000000, 9.307000, - -66.263000, 15.000000, 11.533000, - -66.263000, 0.000000, 11.533000, - -67.594002, 15.000000, 15.095000, - -67.594002, 0.000000, 15.095000, - -68.055000, 15.000000, 16.174999, - -68.055000, 0.000000, 16.174999, - -64.498001, 15.000000, 17.688999, - -64.498001, 0.000000, 17.688999, - -62.557999, 15.000000, 18.524000, - -62.557999, 0.000000, 18.524000, - -73.719002, 23.200001, 14.372000, - -73.719002, 0.000000, 14.372000, - -78.292999, 23.200001, 7.871000, - -78.292999, 0.000000, 7.871000, - -96.703003, 23.200001, 22.743000, - -96.703003, 0.000000, 22.743000, - -91.981003, 23.200001, 28.921000, - -91.981003, 0.000000, 28.921000, - -91.365997, 23.200001, 28.497999, - -91.365997, 0.000000, 28.497999, - -16.691999, 15.000000, 23.099001, - -16.691999, 0.000000, 23.099001, - -25.865999, 15.000000, 18.646000, - -25.865999, 0.000000, 18.646000, - -28.936001, 15.000000, 25.580999, - -28.936001, 0.000000, 25.580999, - -19.975000, 15.000000, 30.334999, - -19.975000, 0.000000, 30.334999, - -1.639000, 20.000000, 2.271000, - -1.639000, 0.000000, 2.271000, - 22.434000, 20.000000, 12.501000, - 22.434000, 0.000000, 12.501000, - 26.280001, 20.000000, 4.119000, - 1.350000, 20.000000, -5.187000, - -66.872002, 7.500000, 27.863001, - -62.557999, 7.500000, 18.524000, - -64.498001, 7.500000, 17.688999, - -69.038002, 7.500000, 27.106001, - -14.692000, 15.000000, 32.939999, - -14.692000, 0.000000, 32.939999, - -11.329000, 15.000000, 25.604000, - -11.329000, 0.000000, 25.604000, - -2.856000, 20.000000, 1.748000, - -2.856000, 0.000000, 1.748000, - -7.738000, 20.000000, 14.026000, - -7.738000, 0.000000, 14.026000, - 16.597000, 20.000000, 25.225000, - 16.597000, 0.000000, 25.225000, - -50.441002, 15.000000, 34.786999, - -50.441002, 0.000000, 34.786999, - -44.750999, 15.000000, 37.103001, - -44.750999, 0.000000, 37.103001, - -41.286999, 15.000000, 28.409000, - -41.286999, 0.000000, 28.409000, - -29.558001, 15.000000, 26.983999, - -29.558001, 0.000000, 26.983999, - -48.816002, 15.000000, 30.413000, - -48.816002, 0.000000, 30.413000, - -15.187000, 15.000000, 34.141998, - -15.187000, 0.000000, 34.141998, - -2.328000, 15.000000, 39.652000, - -2.328000, 0.000000, 39.652000, - -7.203000, 15.000000, 50.316002, - -7.203000, 0.000000, 50.316002, - 2.701000, 15.000000, 54.636002, - 2.701000, 0.000000, 54.636002, - 8.111000, 15.000000, 43.070000, - 8.111000, 0.000000, 43.070000, - 8.552000, 15.000000, 43.280998, - 8.552000, 0.000000, 43.280998, - 8.759000, 15.000000, 42.835999, - 8.759000, 0.000000, 42.835999, - 8.318000, 15.000000, 42.624001, - 8.318000, 0.000000, 42.624001, - 9.334000, 15.000000, 40.442001, - 9.334000, 0.000000, 40.442001, - 9.783000, 15.000000, 40.653999, - 9.783000, 0.000000, 40.653999, - 10.010000, 15.000000, 40.209000, - 10.010000, 0.000000, 40.209000, - 9.548000, 15.000000, 39.986000, - 9.548000, 0.000000, 39.986000, - 14.363000, 15.000000, 29.656000, - 14.363000, 0.000000, 29.656000, - -8.373000, 15.000000, 19.146999, - -8.373000, 0.000000, 19.146999, - -8.527000, 15.000000, 19.481001, - -8.527000, 0.000000, 19.481001, - -55.249001, 15.000000, 47.744999, - -55.249001, 0.000000, 47.744999, - -54.561001, 15.000000, 28.231001, - -54.561001, 0.000000, 28.231001, - -60.030998, 15.000000, 42.580002, - -60.030998, 0.000000, 42.580002, - -61.160999, 15.000000, 45.841000, - -61.160999, 0.000000, 45.841000, - -62.751999, 15.000000, 24.691000, - -62.751999, 0.000000, 24.691000, - -63.259998, 15.000000, 24.568001, - -63.259998, 0.000000, 24.568001, - -78.252998, 15.000000, 20.761000, - -78.252998, 0.000000, 20.761000, - -72.442001, 15.000000, 16.264000, - -72.442001, 0.000000, 16.264000, - -73.719002, 15.000000, 14.372000, - -91.365997, 15.000000, 28.497999, - -85.569000, 15.000000, 35.265999, - -85.569000, 0.000000, 35.265999, - -82.351997, 15.000000, 38.126999, - -82.351997, 0.000000, 38.126999, - -24.101000, 15.000000, 44.827999, - -31.417000, 15.000000, 41.834000, - -31.417000, 0.000000, 41.834000, - -32.199001, 15.000000, 43.726002, - -32.199001, 0.000000, 43.726002, - -35.542999, 15.000000, 42.390999, - -35.542999, 0.000000, 42.390999, - -39.882000, 15.000000, 53.277000, - -39.882000, 0.000000, 53.277000, - -29.209999, 15.000000, 57.217999, - -34.933998, 15.000000, 41.043999, - -34.933998, 0.000000, 41.043999, - 6.332000, 15.000000, 132.835999, - 6.332000, 0.000000, 132.835999, - 6.599000, 15.000000, 128.472000, - 6.599000, 0.000000, 128.472000, - 1.557000, 15.000000, 126.691002, - 1.557000, 0.000000, 126.691002, - 13.694000, 15.000000, 95.878998, - 13.694000, 0.000000, 95.878998, - 8.271000, 15.000000, 92.338997, - 8.271000, 0.000000, 92.338997, - 2.179000, 15.000000, 88.487000, - 2.179000, 0.000000, 88.487000, - 0.655000, 15.000000, 88.253998, - 0.655000, 0.000000, 88.253998, - -0.348000, 15.000000, 88.598999, - -0.348000, 0.000000, 88.598999, - -1.158000, 15.000000, 89.544998, - -1.158000, 0.000000, 89.544998, - -8.353000, 15.000000, 109.214996, - -8.353000, 0.000000, 109.214996, - -9.744000, 15.000000, 112.297997, - -9.744000, 0.000000, 112.297997, - -10.827000, 15.000000, 116.606003, - -10.827000, 0.000000, 116.606003, - -11.482000, 15.000000, 116.516998, - -11.482000, 0.000000, 116.516998, - -14.465000, 15.000000, 126.803001, - -14.465000, 0.000000, 126.803001, - -12.753000, 15.000000, 130.153000, - -12.753000, 0.000000, 130.153000, - 11.742000, 7.500000, 165.173004, - 11.742000, 0.000000, 165.173004, - -9.222000, 7.500000, 143.399994, - -9.222000, 0.000000, 143.399994, - -16.049999, 7.500000, 143.544998, - 8.064000, 7.500000, 168.858002, - 16.583000, 7.500000, 177.462006, - 16.583000, 0.000000, 177.462006, - 18.436001, 7.500000, 172.419998, - 18.436001, 0.000000, 172.419998, - 11.642000, 15.000000, 194.104004, - 11.642000, 0.000000, 194.104004, - 14.831000, 15.000000, 185.210007, - 14.831000, 0.000000, 185.210007, - 13.628000, 15.000000, 184.820007, - 13.628000, 0.000000, 184.820007, - 16.583000, 15.000000, 177.462006, - 11.334000, 15.000000, 133.537003, - 11.334000, 0.000000, 133.537003, - 11.956000, 15.000000, 133.626007, - 11.956000, 0.000000, 133.626007, - 26.527000, 15.000000, 146.639008, - 26.527000, 0.000000, 146.639008, - 47.130001, 15.000000, 123.663002, - 47.130001, 0.000000, 123.663002, - 23.912001, 15.000000, 102.546997, - 23.912001, 0.000000, 102.546997, - 12.812000, 15.000000, 116.717003, - 12.812000, 0.000000, 116.717003, - 7.201000, 15.000000, 132.957993, - 7.201000, 0.000000, 132.957993, - 58.257000, 15.000000, 156.179001, - 58.257000, 0.000000, 156.179001, - 49.530998, 15.000000, 149.610992, - 49.530998, 0.000000, 149.610992, - 48.541000, 15.000000, 150.947006, - 48.541000, 0.000000, 150.947006, - 47.557999, 15.000000, 150.246002, - 47.557999, 0.000000, 150.246002, - 46.969002, 15.000000, 150.802002, - 46.969002, 0.000000, 150.802002, - 46.000000, 15.000000, 149.990005, - 46.000000, 0.000000, 149.990005, - 38.952000, 15.000000, 157.725998, - 38.952000, 0.000000, 157.725998, - 39.901001, 15.000000, 158.572006, - 39.901001, 0.000000, 158.572006, - 37.333000, 15.000000, 161.834000, - 37.333000, 0.000000, 161.834000, - 37.681000, 15.000000, 162.100998, - 37.681000, 0.000000, 162.100998, - 48.046001, 15.000000, 169.792999, - 48.046001, 0.000000, 169.792999, - 33.889000, 15.000000, 170.326996, - 33.889000, 0.000000, 170.326996, - 44.081001, 15.000000, 175.970993, - 44.081001, 0.000000, 175.970993, - 32.618999, 15.000000, 169.636993, - 32.618999, 0.000000, 169.636993, - 7.603000, 15.000000, 197.955994, - 7.603000, 0.000000, 197.955994, - 14.925000, 15.000000, 205.324997, - 14.925000, 0.000000, 205.324997, - 18.937000, 15.000000, 201.529007, - 18.937000, 0.000000, 201.529007, - 21.739000, 15.000000, 204.735001, - 21.739000, 0.000000, 204.735001, - 29.629999, 15.000000, 197.399002, - 29.629999, 0.000000, 197.399002, - 35.514000, 15.000000, 190.408005, - 35.514000, 0.000000, 190.408005, - 44.474998, 15.000000, 176.182007, - 44.474998, 0.000000, 176.182007, - 33.327999, 15.000000, 171.128998, - 33.327999, 0.000000, 171.128998, - 26.667000, 15.000000, 168.901993, - 26.667000, 0.000000, 168.901993, - 19.392000, 15.000000, 186.869003, - 19.392000, 0.000000, 186.869003, - 68.542000, 15.000000, 142.475998, - 68.542000, 0.000000, 142.475998, - 59.834999, 15.000000, 134.828995, - 59.834999, 0.000000, 134.828995, - 51.470001, 15.000000, 144.001007, - 51.470001, 0.000000, 144.001007, - 51.890999, 15.000000, 144.367996, - 51.890999, 0.000000, 144.367996, - 52.813999, 15.000000, 145.169998, - 52.813999, 0.000000, 145.169998, - 54.752998, 15.000000, 130.365005, - 54.752998, 0.000000, 130.365005, - 34.036999, 15.000000, 153.339996, - 34.036999, 0.000000, 153.339996, - 44.287998, 15.000000, 148.520004, - 44.287998, 0.000000, 148.520004, - 49.376999, 15.000000, 142.699005, - 49.376999, 0.000000, 142.699005, - 51.269001, 15.000000, 144.223999, - 51.269001, 0.000000, 144.223999, - -110.424004, 10.000000, 160.018997, - -110.424004, 0.000000, 160.018997, - -119.773003, 10.000000, 172.520004, - -119.773003, 0.000000, 172.520004, - -114.236000, 10.000000, 176.973007, - -114.236000, 0.000000, 176.973007, - -111.889000, 10.000000, 173.912003, - -111.889000, 0.000000, 173.912003, - -106.773003, 10.000000, 177.539993, - -106.773003, 0.000000, 177.539993, - -99.110001, 10.000000, 168.468002, - -99.110001, 0.000000, 168.468002, - -90.136002, 10.000000, 175.169006, - -90.136002, 0.000000, 175.169006, - -97.838997, 10.000000, 184.664993, - -97.838997, 0.000000, 184.664993, - -98.848999, 10.000000, 185.910995, - -98.848999, 0.000000, 185.910995, - -96.188004, 10.000000, 188.048996, - -96.188004, 0.000000, 188.048996, - -97.598999, 10.000000, 189.908005, - -97.598999, 0.000000, 189.908005, - -93.365997, 10.000000, 193.246994, - -93.365997, 0.000000, 193.246994, - -83.369003, 10.000000, 180.223007, - -83.369003, 0.000000, 180.223007, - -111.842003, 10.000000, 182.938995, - -111.842003, 0.000000, 182.938995, - -116.035004, 10.000000, 179.166000, - -116.035004, 0.000000, 179.166000, - -127.764000, 10.000000, 181.524994, - -127.764000, 0.000000, 181.524994, - -67.626999, 10.000000, 191.376999, - -67.626999, 0.000000, 191.376999, - -67.713997, 10.000000, 191.498993, - -67.713997, 0.000000, 191.498993, - -68.209000, 10.000000, 191.164993, - -68.209000, 0.000000, 191.164993, - -68.542999, 10.000000, 191.643997, - -68.542999, 0.000000, 191.643997, - -71.016998, 10.000000, 189.873993, - -71.016998, 0.000000, 189.873993, - -70.737000, 10.000000, 189.462006, - -70.737000, 0.000000, 189.462006, - -71.980003, 10.000000, 188.593994, - -71.980003, 0.000000, 188.593994, - -72.267998, 10.000000, 189.005997, - -72.267998, 0.000000, 189.005997, - -74.795998, 10.000000, 187.235992, - -74.795998, 0.000000, 187.235992, - -74.514999, 10.000000, 186.824005, - -74.514999, 0.000000, 186.824005, - -75.764999, 10.000000, 185.955994, - -75.764999, 0.000000, 185.955994, - -76.053001, 10.000000, 186.367996, - -76.053001, 0.000000, 186.367996, - -78.573997, 10.000000, 184.664993, - -78.573997, 0.000000, 184.664993, - -78.233002, 10.000000, 184.175003, - -78.233002, 0.000000, 184.175003, - -78.727997, 10.000000, 183.830002, - -78.727997, 0.000000, 183.830002, - -78.634003, 10.000000, 183.695999, - -78.634003, 0.000000, 183.695999, - -83.382004, 10.000000, 180.279007, - -83.382004, 0.000000, 180.279007, - -83.455002, 10.000000, 180.378998, - -83.455002, 0.000000, 180.378998, - -92.871002, 10.000000, 192.690002, - -92.871002, 0.000000, 192.690002, - -93.057999, 10.000000, 192.934998, - -93.057999, 0.000000, 192.934998, - -95.332001, 10.000000, 195.906998, - -95.332001, 0.000000, 195.906998, - -95.151001, 10.000000, 196.052002, - -95.151001, 0.000000, 196.052002, - -99.110001, 10.000000, 201.216995, - -99.110001, 0.000000, 201.216995, - -99.530998, 10.000000, 201.639999, - -99.530998, 0.000000, 201.639999, - -107.127998, 10.000000, 209.210007, - -107.127998, 0.000000, 209.210007, - -107.355003, 10.000000, 209.432007, - -107.355003, 0.000000, 209.432007, - -101.931999, 10.000000, 216.199997, - -101.931999, 0.000000, 216.199997, - -101.551003, 10.000000, 215.865997, - -101.551003, 0.000000, 215.865997, - -99.652000, 10.000000, 218.237000, - -99.652000, 0.000000, 218.237000, - -100.039001, 10.000000, 218.570999, - -100.039001, 0.000000, 218.570999, - -98.749001, 10.000000, 220.162994, - -98.749001, 0.000000, 220.162994, - -98.367996, 10.000000, 219.839996, - -98.367996, 0.000000, 219.839996, - -96.461998, 10.000000, 222.210999, - -96.461998, 0.000000, 222.210999, - -96.862999, 10.000000, 222.533997, - -96.862999, 0.000000, 222.533997, - -94.682999, 10.000000, 225.250000, - -94.682999, 0.000000, 225.250000, - -94.000999, 10.000000, 224.692993, - -94.000999, 0.000000, 224.692993, - -91.848000, 10.000000, 227.354004, - -91.848000, 0.000000, 227.354004, - -92.416000, 10.000000, 227.843994, - -92.416000, 0.000000, 227.843994, - -91.152000, 10.000000, 229.423996, - -91.152000, 0.000000, 229.423996, - -90.570999, 10.000000, 228.945999, - -90.570999, 0.000000, 228.945999, - -88.436996, 10.000000, 231.628006, - -88.436996, 0.000000, 231.628006, - -89.133003, 10.000000, 232.184998, - -89.133003, 0.000000, 232.184998, - -87.627998, 10.000000, 234.033005, - -87.627998, 0.000000, 234.033005, - -86.873001, 10.000000, 233.442993, - -86.873001, 0.000000, 233.442993, - -85.668999, 10.000000, 234.945007, - -85.668999, 0.000000, 234.945007, - -77.403999, 10.000000, 225.962006, - -77.403999, 0.000000, 225.962006, - -80.171997, 10.000000, 222.612000, - -80.171997, 0.000000, 222.612000, - -78.306000, 10.000000, 219.962997, - -78.306000, 0.000000, 219.962997, - -78.198997, 10.000000, 219.796005, - -78.198997, 0.000000, 219.796005, - -78.112000, 10.000000, 219.617004, - -78.112000, 0.000000, 219.617004, - -78.045998, 10.000000, 219.417007, - -78.045998, 0.000000, 219.417007, - -78.012001, 10.000000, 219.216995, - -78.012001, 0.000000, 219.216995, - -77.985001, 10.000000, 218.893997, - -77.985001, 0.000000, 218.893997, - -73.919998, 10.000000, 221.798996, - -73.919998, 0.000000, 221.798996, - -73.485001, 10.000000, 221.253998, - -73.485001, 0.000000, 221.253998, - -71.680000, 10.000000, 219.016006, - -71.680000, 0.000000, 219.016006, - -71.572998, 10.000000, 219.104996, - -71.572998, 0.000000, 219.104996, - -69.386002, 10.000000, 216.746002, - -69.386002, 0.000000, 216.746002, - -74.007004, 10.000000, 213.617996, - -74.007004, 0.000000, 213.617996, - -74.053001, 10.000000, 213.584000, - -74.053001, 0.000000, 213.584000, - -75.217003, 10.000000, 212.804993, - -75.217003, 0.000000, 212.804993, - -74.046997, 10.000000, 211.067993, - -74.046997, 0.000000, 211.067993, - -73.987000, 10.000000, 211.113007, - -73.987000, 0.000000, 211.113007, - -72.415001, 10.000000, 208.820007, - -72.415001, 0.000000, 208.820007, - -62.826000, 10.000000, 194.794006, - -62.826000, 0.000000, 194.794006, - -62.778999, 10.000000, 194.716003, - -62.778999, 0.000000, 194.716003, - -64.290001, 10.000000, 193.669998, - -64.290001, 0.000000, 193.669998, - 85.139000, 15.000000, 179.565994, - 85.139000, 0.000000, 179.565994, - 95.705002, 15.000000, 167.210007, - 95.705002, 0.000000, 167.210007, - 83.018997, 15.000000, 154.710007, - 83.018997, 0.000000, 154.710007, - 61.186001, 15.000000, 183.785004, - 61.186001, 0.000000, 183.785004, - 72.507004, 15.000000, 191.988998, - 72.507004, 0.000000, 191.988998, - 76.232002, 15.000000, 186.279007, - 76.232002, 0.000000, 186.279007, - 76.834000, 15.000000, 186.723999, - 76.834000, 0.000000, 186.723999, - 79.943001, 15.000000, 182.171005, - 79.943001, 0.000000, 182.171005, - 78.827003, 15.000000, 181.335999, - 78.827003, 0.000000, 181.335999, - 82.283997, 15.000000, 176.628006, - 82.283997, 0.000000, 176.628006, - 99.677002, 7.300000, 171.440002, - 99.677002, 0.000000, 171.440002, - 88.167999, 7.300000, 187.358002, - 88.167999, 0.000000, 187.358002, - 92.962997, 7.300000, 192.089005, - 92.962997, 0.000000, 192.089005, - 103.943001, 7.300000, 175.981995, - 103.943001, 0.000000, 175.981995, - 103.943001, 15.000000, 175.981995, - 92.962997, 15.000000, 192.089005, - 99.456001, 15.000000, 198.667999, - 99.456001, 0.000000, 198.667999, - 101.549004, 15.000000, 195.873993, - 101.549004, 0.000000, 195.873993, - 110.704002, 15.000000, 183.195007, - 110.704002, 0.000000, 183.195007, - 56.532001, 7.500000, 189.205994, - 56.532001, 0.000000, 189.205994, - 72.600998, 7.500000, 199.492004, - 72.600998, 0.000000, 199.492004, - 75.430000, 7.500000, 194.070999, - 75.430000, 0.000000, 194.070999, - 72.507004, 7.500000, 191.988998, - 61.186001, 7.500000, 183.785004, - 60.598000, 7.500000, 183.350998, - 60.598000, 0.000000, 183.350998, - 84.142998, 15.000000, 219.093994, - 84.142998, 0.000000, 219.093994, - 83.547997, 15.000000, 219.873001, - 83.547997, 0.000000, 219.873001, - 112.135002, 15.000000, 232.608002, - 112.135002, 0.000000, 232.608002, - 114.695999, 15.000000, 234.289001, - 114.695999, 0.000000, 234.289001, - 135.968002, 15.000000, 208.585999, - 135.968002, 0.000000, 208.585999, - 139.009995, 5.000000, 78.278999, - 139.009995, 0.000000, 78.278999, - 149.115005, 5.000000, 87.330002, - 149.115005, 0.000000, 87.330002, - 148.973999, 5.000000, 92.361000, - 148.973999, 0.000000, 92.361000, - 139.345001, 5.000000, 103.893997, - 139.345001, 0.000000, 103.893997, - 181.024994, 5.000000, 138.289993, - 181.024994, 0.000000, 138.289993, - 186.703003, 5.000000, 142.988007, - 186.703003, 0.000000, 142.988007, - 188.962997, 5.000000, 144.847000, - 188.962997, 0.000000, 144.847000, - 201.326996, 5.000000, 130.408997, - 201.326996, 0.000000, 130.408997, - 209.987000, 5.000000, 120.212997, - 209.987000, 0.000000, 120.212997, - 197.542007, 5.000000, 109.638000, - 197.542007, 0.000000, 109.638000, - 219.723007, 5.000000, 83.300003, - 219.723007, 0.000000, 83.300003, - 231.485992, 5.000000, 45.185001, - 231.485992, 0.000000, 45.185001, - 185.459000, 5.000000, 30.000999, - 185.459000, 0.000000, 30.000999, - 162.957001, 5.000000, 50.472000, - 162.957001, 0.000000, 50.472000, - 143.738007, 5.000000, 67.959999, - 143.738007, 0.000000, 67.959999, - 179.259995, 25.700001, 125.945000, - 179.259995, 0.000000, 125.945000, - 174.639008, 25.700001, 131.143997, - 174.639008, 0.000000, 131.143997, - 177.916000, 25.700001, 134.059998, - 177.916000, 0.000000, 134.059998, - 182.537003, 25.700001, 128.873001, - 182.537003, 0.000000, 128.873001, - 149.455994, 25.700001, 65.634003, - 149.455994, 0.000000, 65.634003, - 151.602005, 25.700001, 67.971001, - 151.602005, 0.000000, 67.971001, - 157.514008, 25.700001, 62.584000, - 157.514008, 0.000000, 62.584000, - 160.563004, 25.700001, 65.922997, - 160.563004, 0.000000, 65.922997, - 170.386002, 25.700001, 56.962002, - 170.386002, 0.000000, 56.962002, - 167.110001, 25.700001, 53.377998, - 167.110001, 0.000000, 53.377998, - 158.610001, 25.700001, 61.125000, - 158.610001, 0.000000, 61.125000, - 156.690994, 25.700001, 59.033001, - 156.690994, 0.000000, 59.033001, - 149.783005, 25.700001, 109.503998, - 149.783005, 0.000000, 109.503998, - 157.487000, 25.700001, 116.027000, - 157.487000, 0.000000, 116.027000, - 159.699997, 25.700001, 113.411003, - 159.699997, 0.000000, 113.411003, - 152.003006, 25.700001, 106.888000, - 152.003006, 0.000000, 106.888000, - 134.770996, 25.700001, 91.047997, - 134.770996, 0.000000, 91.047997, - 134.436005, 25.700001, 92.750999, - 134.436005, 0.000000, 92.750999, - 135.057999, 25.700001, 92.940002, - 135.057999, 0.000000, 92.940002, - 135.393005, 25.700001, 95.010002, - 135.393005, 0.000000, 95.010002, - 138.669006, 25.700001, 96.580002, - 138.669006, 0.000000, 96.580002, - 142.988998, 25.700001, 92.584000, - 142.988998, 0.000000, 92.584000, - 142.761993, 25.700001, 90.179001, - 142.761993, 0.000000, 90.179001, - 143.190002, 25.700001, 89.901001, - 143.190002, 0.000000, 89.901001, - 142.794998, 25.700001, 86.706001, - 142.794998, 0.000000, 86.706001, - 139.632004, 25.700001, 85.526001, - 139.632004, 0.000000, 85.526001, - 137.339005, 25.700001, 87.061996, - 137.339005, 0.000000, 87.061996, - 137.445999, 25.700001, 87.462997, - 137.445999, 0.000000, 87.462997, - 135.787003, 25.700001, 88.844002, - 135.787003, 0.000000, 88.844002, - 134.436005, 25.700001, 88.276001, - 134.436005, 0.000000, 88.276001, - 132.095993, 25.700001, 87.274002, - 132.095993, 0.000000, 87.274002, - 131.145996, 25.700001, 89.511002, - 131.145996, 0.000000, 89.511002, - 133.447006, 25.700001, 90.490997, - 133.447006, 0.000000, 90.490997, - 219.423004, 31.700001, 109.102997, - 219.423004, 5.000000, 109.102997, - 194.766998, 31.700001, 88.164001, - 194.766998, 5.000000, 88.164001, - 176.671997, 31.700001, 109.459000, - 176.671997, 5.000000, 109.459000, - 201.326996, 31.700001, 130.408997, - 209.987000, 31.700001, 120.212997, - 203.688004, 7.500000, 157.003006, - 203.688004, 0.000000, 157.003006, - 206.791000, 7.500000, 152.951004, - 206.791000, 0.000000, 152.951004, - 210.983002, 7.500000, 147.462997, - 210.983002, 0.000000, 147.462997, - 216.820999, 7.500000, 139.837997, - 216.820999, 0.000000, 139.837997, - 217.350006, 7.500000, 139.147995, - 217.350006, 0.000000, 139.147995, - 230.529999, 7.500000, 121.916000, - 230.529999, 0.000000, 121.916000, - 232.602997, 7.500000, 119.154999, - 232.602997, 0.000000, 119.154999, - 223.789001, 7.500000, 111.418999, - 223.789001, 0.000000, 111.418999, - 234.589005, 7.500000, 99.107002, - 234.589005, 0.000000, 99.107002, - 239.289993, 7.500000, 93.752998, - 239.289993, 0.000000, 93.752998, - 249.274002, 7.500000, 85.927002, - 249.274002, 0.000000, 85.927002, - 245.863007, 7.500000, 81.573997, - 245.863007, 0.000000, 81.573997, - 238.360001, 7.500000, 78.668999, - 238.360001, 0.000000, 78.668999, - 240.927994, 7.500000, 71.845001, - 240.927994, 0.000000, 71.845001, - 248.089996, 7.500000, 52.787998, - 248.089996, 0.000000, 52.787998, - 248.819000, 7.500000, 50.905998, - 248.819000, 0.000000, 50.905998, - 239.511002, 7.500000, 47.834000, - 239.511002, 0.000000, 47.834000, - 231.485992, 7.500000, 45.185001, - 219.723007, 7.500000, 83.300003, - 206.928619, 7.500000, 98.492203, - 206.928619, 0.000000, 98.492203, - 219.423004, 7.500000, 109.102997, - 219.423004, 0.000000, 109.102997, - 209.987000, 7.500000, 120.212997, - 201.326996, 7.500000, 130.408997, - 188.962997, 7.500000, 144.847000, - 197.007004, 7.500000, 151.492996, - 197.007004, 0.000000, 151.492996, - 198.966995, 7.500000, 153.106995, - 198.966995, 0.000000, 153.106995, - 139.345001, 7.500000, 103.893997, - 148.973999, 7.500000, 92.361000, - 149.115005, 7.500000, 87.330002, - 139.009995, 7.500000, 78.278999, - 135.332001, 7.500000, 86.317001, - 135.332001, 0.000000, 86.317001, - 134.436005, 7.500000, 88.276001, - 135.787003, 7.500000, 88.844002, - 137.445999, 7.500000, 87.462997, - 137.339005, 7.500000, 87.061996, - 139.632004, 7.500000, 85.526001, - 142.794998, 7.500000, 86.706001, - 143.190002, 7.500000, 89.901001, - 142.761993, 7.500000, 90.179001, - 142.988998, 7.500000, 92.584000, - 138.669006, 7.500000, 96.580002, - 135.393005, 7.500000, 95.010002, - 135.057999, 7.500000, 92.940002, - 134.436005, 7.500000, 92.750999, - 134.770996, 7.500000, 91.047997, - 133.447006, 7.500000, 90.490997, - 130.658005, 7.500000, 96.747002, - 130.658005, 0.000000, 96.747002, - 133.514008, 7.500000, 99.096001, - 133.514008, 0.000000, 99.096001, - 135.298996, 7.500000, 100.554001, - 135.298996, 0.000000, 100.554001, - 114.421997, 21.299999, 118.820999, - 114.421997, 0.000000, 118.820999, - 120.058998, 21.299999, 124.231003, - 120.058998, 0.000000, 124.231003, - 121.616997, 21.299999, 125.790001, - 121.616997, 0.000000, 125.790001, - 124.378998, 21.299999, 128.572998, - 124.378998, 0.000000, 128.572998, - 125.275002, 21.299999, 127.625999, - 125.275002, 0.000000, 127.625999, - 132.089005, 21.299999, 120.490997, - 132.089005, 0.000000, 120.490997, - 127.615997, 21.299999, 116.349998, - 127.615997, 0.000000, 116.349998, - 126.332001, 21.299999, 115.158997, - 126.332001, 0.000000, 115.158997, - 124.686996, 21.299999, 113.634003, - 124.686996, 0.000000, 113.634003, - 121.917999, 21.299999, 111.061996, - 121.917999, 0.000000, 111.061996, - 156.423996, 20.000000, 174.044998, - 156.423996, 0.000000, 174.044998, - 134.229004, 20.000000, 156.914001, - 134.229004, 0.000000, 156.914001, - 121.042000, 20.000000, 172.419998, - 121.042000, 0.000000, 172.419998, - 136.294998, 20.000000, 187.970993, - 136.294998, 0.000000, 187.970993, - 141.979004, 20.000000, 193.770004, - 141.979004, 0.000000, 193.770004, - 125.275002, 20.000000, 127.625999, - 133.968002, 20.000000, 135.774994, - 133.968002, 0.000000, 135.774994, - 135.893997, 20.000000, 137.578003, - 135.893997, 0.000000, 137.578003, - 144.205994, 20.000000, 145.192001, - 144.205994, 0.000000, 145.192001, - 150.753006, 20.000000, 137.556000, - 150.753006, 0.000000, 137.556000, - 142.654999, 20.000000, 130.153000, - 142.654999, 0.000000, 130.153000, - 132.089005, 20.000000, 120.490997, - 161.526001, 20.000000, 167.076996, - 161.526001, 0.000000, 167.076996, - 171.362000, 20.000000, 153.507004, - 171.362000, 0.000000, 153.507004, - 164.962997, 20.000000, 148.554001, - 164.962997, 0.000000, 148.554001, - 141.992996, 20.000000, 147.796997, - 141.992996, 0.000000, 147.796997, - 136.195007, 20.000000, 154.598007, - 136.195007, 0.000000, 154.598007, - 147.910995, 20.000000, 198.824005, - 147.910995, 0.000000, 198.824005, - 153.233994, 20.000000, 203.509995, - 153.233994, 0.000000, 203.509995, - 164.408005, 20.000000, 187.136002, - 164.408005, 0.000000, 187.136002, - 164.802002, 20.000000, 186.567993, - 164.802002, 0.000000, 186.567993, - 180.591003, 20.000000, 160.843002, - 180.591003, 0.000000, 160.843002, - 175.388000, 20.000000, 156.712997, - 175.388000, 0.000000, 156.712997, - 166.695007, 20.000000, 170.561005, - 166.695007, 0.000000, 170.561005, - 158.970993, 20.000000, 182.895004, - 158.970993, 0.000000, 182.895004, - 173.207993, 20.000000, 154.977005, - 173.207993, 0.000000, 154.977005, - 115.852997, 7.500000, 141.328995, - 115.852997, 0.000000, 141.328995, - 119.150002, 7.500000, 138.167999, - 119.150002, 0.000000, 138.167999, - 118.126999, 7.500000, 137.009995, - 118.126999, 0.000000, 137.009995, - 122.907997, 7.500000, 132.412994, - 122.907997, 0.000000, 132.412994, - 122.166000, 7.500000, 131.432999, - 122.166000, 0.000000, 131.432999, - 124.378998, 7.500000, 128.572998, - 121.616997, 7.500000, 125.790001, - 120.058998, 7.500000, 124.231003, - 116.555000, 7.500000, 128.317001, - 116.555000, 0.000000, 128.317001, - 117.344002, 7.500000, 129.018005, - 117.344002, 0.000000, 129.018005, - 113.887001, 7.500000, 131.712006, - 113.887001, 0.000000, 131.712006, - 108.102997, 7.500000, 136.542999, - 108.102997, 0.000000, 136.542999, - 98.513000, 7.500000, 146.037994, - 98.513000, 0.000000, 146.037994, - 98.774002, 7.500000, 146.261002, - 98.774002, 0.000000, 146.261002, - 97.824997, 7.500000, 147.541000, - 97.824997, 0.000000, 147.541000, - 103.334999, 7.500000, 153.496002, - 103.334999, 0.000000, 153.496002, - 111.459999, 21.299999, 129.317993, - 111.459999, 0.000000, 129.317993, - 107.781998, 21.299999, 125.689003, - 107.781998, 0.000000, 125.689003, - 91.967003, 21.299999, 141.819000, - 91.967003, 0.000000, 141.819000, - 97.824997, 21.299999, 147.541000, - 98.774002, 21.299999, 146.261002, - 98.513000, 21.299999, 146.037994, - 108.102997, 21.299999, 136.542999, - 113.887001, 21.299999, 131.712006, - 175.007004, 10.000000, -8.582000, - 175.007004, 0.000000, -8.582000, - 172.371994, 10.000000, -10.542000, - 172.371994, 0.000000, -10.542000, - 174.438995, 10.000000, -13.325000, - 174.438995, 0.000000, -13.325000, - 176.906006, 10.000000, -11.488000, - 176.906006, 0.000000, -11.488000, - 183.145004, 10.000000, -21.073000, - 183.145004, 0.000000, -21.073000, - 179.179993, 10.000000, -22.097000, - 179.179993, 0.000000, -22.097000, - 177.274002, 10.000000, -22.587000, - 177.274002, 0.000000, -22.587000, - 164.990005, 10.000000, -3.863000, - 164.990005, 0.000000, -3.863000, - 167.016006, 10.000000, -2.159000, - 167.016006, 0.000000, -2.159000, - 169.477005, 10.000000, -0.089000, - 169.477005, 0.000000, -0.089000, - 174.171005, 10.000000, -23.377001, - 174.171005, 0.000000, -23.377001, - 169.537003, 10.000000, -16.464001, - 169.537003, 0.000000, -16.464001, - 167.817993, 10.000000, -13.503000, - 167.817993, 0.000000, -13.503000, - 162.268005, 10.000000, -6.156000, - 162.268005, 0.000000, -6.156000, - 171.589996, 10.000000, 1.681000, - 171.589996, 0.000000, 1.681000, - 173.917007, 10.000000, 3.652000, - 173.917007, 0.000000, 3.652000, - 187.686005, 10.000000, -19.903999, - 187.686005, 0.000000, -19.903999, - 184.817001, 10.000000, -20.650000, - 184.817001, 0.000000, -20.650000, - 178.884995, 10.000000, -10.019000, - 178.884995, 0.000000, -10.019000, - 176.819000, 10.000000, -7.236000, - 176.819000, 0.000000, -7.236000, - 176.524994, 10.000000, 5.833000, - 176.524994, 0.000000, 5.833000, - 179.199997, 10.000000, 8.093000, - 179.199997, 0.000000, 8.093000, - 184.242004, 10.000000, -2.115000, - 184.242004, 0.000000, -2.115000, - 181.813995, 10.000000, -3.740000, - 181.813995, 0.000000, -3.740000, - 185.091003, 10.000000, -9.006000, - 185.091003, 0.000000, -9.006000, - 187.057007, 10.000000, -7.826000, - 187.057007, 0.000000, -7.826000, - 192.427002, 10.000000, -18.690001, - 192.427002, 0.000000, -18.690001, - 189.431000, 10.000000, -19.458000, - 189.431000, 0.000000, -19.458000, - 158.776993, 10.000000, -62.071999, - 158.776993, 0.000000, -62.071999, - 152.684998, 10.000000, -42.445999, - 152.684998, 0.000000, -42.445999, - 159.132004, 10.000000, -46.242001, - 159.132004, 0.000000, -46.242001, - 164.100006, 10.000000, -45.084000, - 164.100006, 0.000000, -45.084000, - 155.548004, 10.000000, -36.958000, - 155.548004, 0.000000, -36.958000, - 164.554993, 10.000000, -34.442001, - 164.554993, 0.000000, -34.442001, - 172.065002, 10.000000, -42.825001, - 172.065002, 0.000000, -42.825001, - 191.584000, 10.000000, -37.192001, - 191.584000, 0.000000, -37.192001, - 183.371994, 10.000000, -29.021000, - 183.371994, 0.000000, -29.021000, - 188.654999, 10.000000, -27.596001, - 188.654999, 0.000000, -27.596001, - 192.253006, 10.000000, -26.627001, - 192.253006, 0.000000, -26.627001, - 199.796005, 10.000000, -34.609001, - 199.796005, 0.000000, -34.609001, - 206.710007, 10.000000, -32.672001, - 206.710007, 0.000000, -32.672001, - 215.470001, 10.000000, -19.903999, - 215.470001, 0.000000, -19.903999, - 218.587006, 10.000000, -18.846001, - 218.587006, 0.000000, -18.846001, - 220.854004, 10.000000, -25.903999, - 220.854004, 0.000000, -25.903999, - 226.182999, 10.000000, -41.789001, - 226.182999, 0.000000, -41.789001, - 215.470001, 4.000000, -19.903999, - 206.710007, 4.000000, -32.672001, - 199.796005, 4.000000, -34.609001, - 192.253006, 4.000000, -26.627001, - 183.371994, 4.000000, -29.021000, - 191.584000, 4.000000, -37.192001, - 172.065002, 4.000000, -42.825001, - 164.554993, 4.000000, -34.442001, - 155.548004, 4.000000, -36.958000, - 164.100006, 4.000000, -45.084000, - 159.132004, 4.000000, -46.242001, - 152.684998, 4.000000, -42.445999, - 151.522003, 4.000000, -38.227001, - 151.522003, 0.000000, -38.227001, - 153.701996, 4.000000, -37.536999, - 153.701996, 0.000000, -37.536999, - 187.117004, 10.000000, 4.019000, - 187.117004, 0.000000, 4.019000, - 185.766006, 10.000000, 3.329000, - 185.766006, 0.000000, 3.329000, - 187.759003, 10.000000, -0.567000, - 187.759003, 0.000000, -0.567000, - 189.076996, 10.000000, 0.112000, - 189.076996, 0.000000, 0.112000, - 190.681000, 10.000000, -3.306000, - 190.681000, 0.000000, -3.306000, - 189.684998, 10.000000, -3.751000, - 189.684998, 0.000000, -3.751000, - 191.404007, 10.000000, -7.569000, - 191.404007, 0.000000, -7.569000, - 192.487000, 10.000000, -7.080000, - 192.487000, 0.000000, -7.080000, - 197.481995, 10.000000, -17.388000, - 197.481995, 0.000000, -17.388000, - 195.035004, 10.000000, -18.011000, - 195.035004, 0.000000, -18.011000, - 181.828003, 10.000000, 9.874000, - 181.828003, 0.000000, 9.874000, - 183.660004, 10.000000, 11.121000, - 183.660004, 0.000000, 11.121000, - 188.587997, 10.000000, 1.069000, - 188.587997, 0.000000, 1.069000, - 189.557999, 10.000000, 1.559000, - 189.557999, 0.000000, 1.559000, - 188.052994, 10.000000, 4.498000, - 188.052994, 0.000000, 4.498000, - 187.270996, 10.000000, 13.570000, - 187.270996, 0.000000, 13.570000, - 188.173996, 10.000000, 11.733000, - 188.173996, 0.000000, 11.733000, - 191.464005, 10.000000, 12.980000, - 191.464005, 0.000000, 12.980000, - 196.707001, 10.000000, 14.962000, - 196.707001, 0.000000, 14.962000, - 208.227997, 10.000000, -13.592000, - 208.227997, 0.000000, -13.592000, - 203.440002, 10.000000, -15.284000, - 203.440002, 0.000000, -15.284000, - 193.757996, 10.000000, -6.512000, - 193.757996, 0.000000, -6.512000, - 192.500000, 10.000000, -3.718000, - 192.500000, 0.000000, -3.718000, - 191.143005, 10.000000, -4.330000, - 191.143005, 0.000000, -4.330000, - 84.931999, 23.600000, -60.869999, - 84.931999, 0.000000, -60.869999, - 89.839996, 23.600000, -81.052002, - 89.839996, 0.000000, -81.052002, - 74.834000, 23.600000, -83.579002, - 74.834000, 0.000000, -83.579002, - 70.380997, 23.600000, -64.431999, - 70.380997, 0.000000, -64.431999, - 144.580994, 10.000000, -50.627998, - 144.580994, 0.000000, -50.627998, - 148.966995, 10.000000, -65.055000, - 148.966995, 0.000000, -65.055000, - 135.653000, 10.000000, -69.107002, - 135.653000, 0.000000, -69.107002, - 131.574005, 10.000000, -54.390999, - 131.574005, 0.000000, -54.390999, - 142.541000, 10.000000, -51.217999, - 142.541000, 0.000000, -51.217999, - 122.373001, 23.600000, -73.137001, - 122.373001, 0.000000, -73.137001, - 117.323997, 23.600000, -52.387001, - 117.323997, 0.000000, -52.387001, - 129.701996, 23.600000, -47.344002, - 129.701996, 0.000000, -47.344002, - 131.574005, 23.600000, -54.390999, - 135.653000, 23.600000, -69.107002, - 84.792000, 23.600000, -60.313000, - 84.792000, 0.000000, -60.313000, - 157.473007, 10.000000, -27.930000, - 157.473007, 0.000000, -27.930000, - 149.776993, 10.000000, -30.134001, - 149.776993, 0.000000, -30.134001, - 146.947998, 10.000000, -30.947001, - 146.947998, 0.000000, -30.947001, - 145.302994, 10.000000, -28.141001, - 145.302994, 0.000000, -28.141001, - 141.865997, 10.000000, -24.312000, - 141.865997, 0.000000, -24.312000, - 141.505005, 10.000000, -41.321999, - 141.505005, 0.000000, -41.321999, - 143.798004, 10.000000, -40.609001, - 143.798004, 0.000000, -40.609001, - 151.522003, 10.000000, -38.227001, - 156.998993, 10.000000, -62.605999, - 156.998993, 0.000000, -62.605999, - -76.514000, 7.500000, -137.537003, - -76.514000, 0.000000, -137.537003, - -86.498001, 7.500000, -143.248001, - -86.498001, 0.000000, -143.248001, - -94.502998, 7.500000, -130.656998, - -94.502998, 0.000000, -130.656998, - -87.040001, 7.500000, -125.759003, - -87.040001, 0.000000, -125.759003, - -89.902000, 7.500000, -120.816002, - -89.902000, 0.000000, -120.816002, - -84.685997, 7.500000, -116.998001, - -84.685997, 0.000000, -116.998001, - -70.917000, 7.500000, -110.362999, - -70.917000, 0.000000, -110.362999, - -70.014000, 7.500000, -109.929001, - -70.014000, 0.000000, -109.929001, - -64.851997, 7.500000, -121.750999, - -64.851997, 0.000000, -121.750999, - -79.268997, 7.500000, -127.561996, - -79.268997, 0.000000, -127.561996, - -78.921997, 7.500000, -128.285995, - -78.921997, 0.000000, -128.285995, - -81.369003, 7.500000, -129.856003, - -81.369003, 0.000000, -129.856003, - -111.099998, 7.500000, -167.884003, - -111.099998, 0.000000, -167.884003, - -124.320000, 7.500000, -178.826996, - -124.320000, 0.000000, -178.826996, - -135.279999, 7.500000, -164.899994, - -135.279999, 0.000000, -164.899994, - -121.196999, 7.500000, -154.001999, - -121.196999, 0.000000, -154.001999, - -75.277000, 7.500000, -165.656998, - -75.277000, 0.000000, -165.656998, - -99.657997, 7.500000, -179.406006, - -99.657997, 0.000000, -179.406006, - -108.491997, 7.500000, -165.957993, - -108.491997, 0.000000, -165.957993, - -82.620003, 7.500000, -151.718994, - -82.620003, 0.000000, -151.718994, - -51.898998, 7.500000, -152.488007, - -51.898998, 0.000000, -152.488007, - -58.411999, 7.500000, -141.087997, - -58.411999, 0.000000, -141.087997, - -48.862999, 7.500000, -135.733994, - -48.862999, 0.000000, -135.733994, - -40.931999, 7.500000, -130.869003, - -34.405998, 7.500000, -142.623993, - -115.634003, 7.500000, -189.826004, - -115.634003, 0.000000, -189.826004, - -91.721001, 7.500000, -116.775002, - -91.721001, 0.000000, -116.775002, - -92.836998, 7.500000, -112.623001, - -92.836998, 0.000000, -112.623001, - -82.264999, 7.500000, -151.552994, - -82.264999, 0.000000, -151.552994, - -86.939003, 7.500000, -143.537003, - -86.939003, 0.000000, -143.537003, - -70.703003, 7.500000, -147.434006, - -70.703003, 0.000000, -147.434006, - -115.580002, 7.500000, -113.580002, - -115.580002, 0.000000, -113.580002, - -115.527000, 7.500000, -110.852997, - -115.527000, 0.000000, -110.852997, - -115.259003, 7.500000, -96.625999, - -115.259003, 0.000000, -96.625999, - -105.830002, 7.500000, -96.804001, - -105.830002, 0.000000, -96.804001, - -106.105003, 7.500000, -111.053001, - -106.105003, 0.000000, -111.053001, - -106.151001, 7.500000, -113.758003, - -106.151001, 0.000000, -113.758003, - -123.711998, 7.500000, -110.685997, - -123.711998, 0.000000, -110.685997, - -123.444000, 7.500000, -96.470001, - -123.444000, 0.000000, -96.470001, - -123.764999, 7.500000, -113.425003, - -123.764999, 0.000000, -113.425003, - -137.520996, 7.500000, -110.407997, - -137.520996, 0.000000, -110.407997, - -148.889008, 7.500000, -104.819000, - -148.889008, 0.000000, -104.819000, - -145.839005, 7.500000, -96.213997, - -145.839005, 0.000000, -96.213997, - -135.548004, 7.500000, -113.525002, - -135.548004, 0.000000, -113.525002, - -134.692001, 7.500000, -111.865997, - -134.692001, 0.000000, -111.865997, - -144.248001, 7.500000, -130.311996, - -144.248001, 0.000000, -130.311996, - -146.667999, 7.500000, -128.431000, - -146.667999, 0.000000, -128.431000, - -151.582993, 7.500000, -125.191002, - -151.582993, 0.000000, -125.191002, - -158.423996, 7.500000, -120.682999, - -158.423996, 0.000000, -120.682999, - -156.591995, 7.500000, -117.109001, - -156.591995, 0.000000, -117.109001, - -155.561996, 7.500000, -117.487999, - -155.561996, 0.000000, -117.487999, - -129.182007, 7.500000, -149.348007, - -129.182007, 0.000000, -149.348007, - -139.380005, 7.500000, -158.744003, - -139.380005, 0.000000, -158.744003, - -150.580002, 7.500000, -146.598999, - -150.580002, 0.000000, -146.598999, - -140.522995, 7.500000, -137.337006, - -140.522995, 0.000000, -137.337006, - -138.156006, 7.500000, -135.154999, - -138.156006, 0.000000, -135.154999, - -126.961998, 7.500000, -147.300003, - -126.961998, 0.000000, -147.300003, - -159.781998, 7.500000, -136.735001, - -159.781998, 0.000000, -136.735001, - -163.065002, 7.500000, -134.320007, - -163.065002, 0.000000, -134.320007, - -162.503006, 7.500000, -133.440002, - -162.503006, 0.000000, -133.440002, - -160.309998, 7.500000, -130.011993, - -160.309998, 0.000000, -130.011993, - -163.378998, 7.500000, -127.417999, - -163.378998, 0.000000, -127.417999, - -180.345001, 5.000000, -152.910995, - -170.567993, 5.000000, -141.744995, - -170.567993, 0.000000, -141.744995, - -160.363998, 5.000000, -150.039001, - -160.363998, 0.000000, -150.039001, - -154.332001, 5.000000, -156.216995, - -154.332001, 0.000000, -156.216995, - -176.138000, 5.000000, -186.352005, - -176.138000, 0.000000, -186.352005, - -181.514999, 5.000000, -190.983002, - -181.514999, 0.000000, -190.983002, - -189.613007, 5.000000, -180.485001, - -189.613007, 0.000000, -180.485001, - -197.209000, 5.000000, -187.955002, - -197.209000, 0.000000, -187.955002, - -206.317001, 5.000000, -177.257004, - -206.317001, 0.000000, -177.257004, - -194.735001, 5.000000, -167.727997, - 117.344002, 21.299999, 129.018005, - 116.555000, 21.299999, 128.317001, - -79.209000, 15.000000, 76.053001, - -69.198997, 15.000000, 79.771004, - -67.894997, 15.000000, 75.830002, - -67.894997, 0.000000, 75.830002, - -63.555000, 15.000000, 62.738998, - -63.555000, 0.000000, 62.738998, - -173.785004, 7.500000, -123.577003, - -173.785004, 0.000000, -123.577003, - -191.197998, 7.500000, -114.670998, - -191.197998, 0.000000, -114.670998, - -186.462997, 7.500000, -106.667000, - -186.462997, 0.000000, -106.667000, - -184.322998, 7.500000, -108.304001, - -184.322998, 0.000000, -108.304001, - -212.408997, 24.000000, -166.313995, - -212.408997, 0.000000, -166.313995, - -229.421005, 24.000000, -146.087006, - -229.421005, 0.000000, -146.087006, - -222.453003, 24.000000, -138.917007, - -222.453003, 0.000000, -138.917007, - -223.067993, 24.000000, -138.326996, - -223.067993, 0.000000, -138.326996, - -216.649002, 24.000000, -132.104004, - -216.649002, 0.000000, -132.104004, - -217.384003, 24.000000, -131.503006, - -217.384003, 0.000000, -131.503006, - -207.942001, 24.000000, -121.763000, - -207.942001, 0.000000, -121.763000, - -208.464005, 24.000000, -121.238998, - -208.464005, 0.000000, -121.238998, - -206.169998, 24.000000, -118.412003, - -206.169998, 0.000000, -118.412003, - -197.095993, 24.000000, -124.178001, - -197.095993, 0.000000, -124.178001, - -196.119003, 24.000000, -122.931000, - -196.119003, 0.000000, -122.931000, - -185.820999, 24.000000, -128.563995, - -185.820999, 0.000000, -128.563995, - -180.798996, 24.000000, -133.229004, - -180.798996, 0.000000, -133.229004, - -309.058014, 7.500000, -228.121002, - -309.058014, 0.000000, -228.121002, - -317.830994, 7.500000, -213.748993, - -317.830994, 0.000000, -213.748993, - -316.066010, 7.500000, -212.591003, - -316.066010, 0.000000, -212.591003, - -316.975006, 7.500000, -211.255005, - -316.975006, 0.000000, -211.255005, - -317.276001, 7.500000, -211.455994, - -317.276001, 0.000000, -211.455994, - -320.212006, 7.500000, -206.423996, - -320.212006, 0.000000, -206.423996, - -315.898010, 7.500000, -203.695999, - -315.898010, 0.000000, -203.695999, - -316.787994, 7.500000, -202.093002, - -316.787994, 0.000000, -202.093002, - -316.467010, 7.500000, -200.156006, - -316.467010, 0.000000, -200.156006, - -314.200012, 7.500000, -198.776001, - -314.200012, 0.000000, -198.776001, - -312.354004, 7.500000, -199.320999, - -312.354004, 0.000000, -199.320999, - -310.601990, 7.500000, -198.218994, - -310.601990, 0.000000, -198.218994, - -309.645996, 7.500000, -199.977997, - -309.645996, 0.000000, -199.977997, - -289.638000, 7.500000, -188.000000, - -289.638000, 0.000000, -188.000000, - -294.058014, 7.500000, -180.473999, - -294.058014, 0.000000, -180.473999, - -284.261993, 7.500000, -174.985992, - -284.261993, 0.000000, -174.985992, - -283.485992, 7.500000, -174.751999, - -283.485992, 0.000000, -174.751999, - -282.596985, 7.500000, -174.929993, - -282.596985, 0.000000, -174.929993, - -281.881012, 7.500000, -175.498001, - -281.881012, 0.000000, -175.498001, - -281.440002, 7.500000, -176.289001, - -281.440002, 0.000000, -176.289001, - -281.406006, 7.500000, -177.190002, - -281.406006, 0.000000, -177.190002, - -281.634003, 7.500000, -177.936005, - -281.634003, 0.000000, -177.936005, - -282.209015, 7.500000, -178.470001, - -282.209015, 0.000000, -178.470001, - -279.380005, 7.500000, -183.268997, - -279.380005, 0.000000, -183.268997, - -271.135010, 7.500000, -178.660004, - -271.135010, 0.000000, -178.660004, - -274.036987, 7.500000, -173.393997, - -274.036987, 0.000000, -173.393997, - -274.867004, 7.500000, -173.550003, - -274.867004, 0.000000, -173.550003, - -275.716003, 7.500000, -173.350006, - -275.716003, 0.000000, -173.350006, - -276.324005, 7.500000, -172.714996, - -276.324005, 0.000000, -172.714996, - -276.605011, 7.500000, -171.979996, - -276.605011, 0.000000, -171.979996, - -276.592010, 7.500000, -170.990005, - -276.592010, 0.000000, -170.990005, - -276.230988, 7.500000, -170.455002, - -276.230988, 0.000000, -170.455002, - -275.835999, 7.500000, -170.121002, - -275.835999, 0.000000, -170.121002, - -265.778992, 7.500000, -164.031998, - -265.778992, 0.000000, -164.031998, - -256.216003, 7.500000, -180.774994, - -256.216003, 0.000000, -180.774994, - -234.229004, 7.500000, -163.830994, - -234.229004, 0.000000, -163.830994, - -260.615997, 7.500000, -132.460999, - -260.615997, 0.000000, -132.460999, - -262.066986, 7.500000, -133.695999, - -262.066986, 0.000000, -133.695999, - -273.315002, 7.500000, -120.515999, - -273.315002, 0.000000, -120.515999, - -257.205994, 7.500000, -106.766998, - -257.205994, 0.000000, -106.766998, - -245.964996, 7.500000, -119.947998, - -245.964996, 0.000000, -119.947998, - -249.134995, 7.500000, -122.653000, - -249.134995, 0.000000, -122.653000, - -229.421005, 7.500000, -146.087006, - -212.408997, 7.500000, -166.313995, - -223.970993, 7.500000, -176.033005, - -223.970993, 0.000000, -176.033005, - -248.365997, 7.500000, -194.089005, - -248.365997, 0.000000, -194.089005, - -276.089996, 7.500000, -209.975006, - -276.089996, 0.000000, -209.975006, - -308.108002, 7.500000, -228.231995, - -308.108002, 0.000000, -228.231995, - -308.596008, 7.500000, -228.332993, - -308.596008, 0.000000, -228.332993, - 101.602997, 5.000000, 115.482002, - 101.602997, 4.700000, 115.482002, - 96.160004, 5.000000, 110.405998, - 96.160004, 4.700000, 110.405998, - 93.318001, 4.700000, 113.432999, - 98.767998, 4.700000, 118.510002, - 101.602997, 0.000000, 115.482002, - 114.750000, 5.000000, 101.400002, - 114.750000, 0.000000, 101.400002, - 109.306000, 5.000000, 96.313004, - 109.306000, 0.000000, 96.313004, - 96.160004, 0.000000, 110.405998, - -71.324997, 15.000000, 17.767000, - -71.324997, 0.000000, 17.767000, - -78.292999, 15.000000, 7.871000, - -62.993000, 15.000000, 122.361000, - -62.993000, 0.000000, 122.361000, - -53.563999, 15.000000, 113.055000, - -54.146000, 15.000000, 112.498001, - -58.779999, 15.000000, 108.045998, - -58.779999, 0.000000, 108.045998, - -51.537998, 7.500000, 96.469002, - -51.537998, 0.000000, 96.469002, - -50.575001, 7.500000, 92.773003, - -47.578999, 7.500000, 82.698997, - -50.067001, 7.500000, 81.852997, - -50.067001, 0.000000, 81.852997, - -58.779999, 7.500000, 108.045998, - -65.554001, 15.000000, 76.598999, - -65.554001, 0.000000, 76.598999, - -50.067001, 15.000000, 81.852997, - -65.554001, 7.500000, 76.598999, - -67.894997, 7.500000, 75.830002, - -73.905998, 7.500000, 93.508003, - -28.722000, 22.000000, 92.338997, - -22.235001, 22.000000, 78.068001, - -29.025999, 22.000000, 75.285004, - -29.025999, 0.000000, 75.285004, - -35.817001, 22.000000, 72.501999, - -42.283001, 22.000000, 86.683998, - -35.502499, 22.000000, 89.511497, - -35.502499, 0.000000, 89.511497, - -28.722000, 22.002426, 92.338997, - -22.235001, 22.004669, 78.068001, - -29.025999, 26.700001, 75.285004, - -35.817001, 22.008108, 72.501999, - -35.502499, 26.700001, 89.511497, - 130.973007, 21.299999, 150.524002, - 130.973007, 0.000000, 150.524002, - 128.572006, 21.299999, 153.307007, - 128.572006, 0.000000, 153.307007, - 123.696999, 21.299999, 149.311005, - 123.696999, 0.000000, 149.311005, - 115.852997, 21.299999, 141.328995, - 103.334999, 21.299999, 153.496002, - 109.947998, 21.299999, 160.074997, - 109.947998, 0.000000, 160.074997, - 111.105003, 21.299999, 161.222000, - 111.105003, 0.000000, 161.222000, - 121.042000, 21.299999, 172.419998, - 134.229004, 21.299999, 156.914001, - 136.195007, 21.299999, 154.598007, - 124.378998, 20.000000, 128.572998, - 122.166000, 20.000000, 131.432999, - 122.907997, 20.000000, 132.412994, - 118.126999, 20.000000, 137.009995, - 119.150002, 20.000000, 138.167999, - 115.852997, 20.000000, 141.328995, - 123.696999, 20.000000, 149.311005, - 128.572006, 20.000000, 153.307007, - 130.973007, 20.000000, 150.524002, - 99.677002, 6.500000, 171.440002, - 95.705002, 6.500000, 167.210007, - 85.139000, 6.500000, 179.565994, - 83.167000, 6.500000, 182.416000, - 83.167000, 0.000000, 182.416000, - 88.167999, 6.500000, 187.358002, - 188.983002, 20.000000, 201.628998, - 188.983002, 0.000000, 201.628998, - 204.871002, 20.000000, 175.414001, - 204.871002, 0.000000, 175.414001, - 195.770004, 20.000000, 169.537003, - 195.770004, 0.000000, 169.537003, - 195.048004, 20.000000, 170.783997, - 195.048004, 0.000000, 170.783997, - 176.852997, 20.000000, 221.643005, - 176.852997, 0.000000, 221.643005, - 204.871002, 7.500000, 175.414001, - 188.983002, 7.500000, 201.628998, - 176.852997, 7.500000, 221.643005, - 189.216995, 7.500000, 231.716995, - 189.216995, 0.000000, 231.716995, - 188.869003, 7.500000, 231.884003, - 188.869003, 0.000000, 231.884003, - 191.651001, 7.500000, 233.977005, - 191.651001, 0.000000, 233.977005, - 192.173004, 7.500000, 233.276001, - 192.173004, 0.000000, 233.276001, - 214.889008, 7.500000, 253.167007, - 214.889008, 0.000000, 253.167007, - 216.533997, 7.500000, 254.615005, - 216.533997, 0.000000, 254.615005, - 218.399002, 7.500000, 256.239990, - 218.399002, 0.000000, 256.239990, - 220.164993, 7.500000, 257.786987, - 220.164993, 0.000000, 257.786987, - 234.802994, 7.500000, 270.609985, - 234.802994, 0.000000, 270.609985, - 248.076996, 7.500000, 282.243011, - 248.076996, 0.000000, 282.243011, - 258.287994, 7.500000, 268.628998, - 258.287994, 0.000000, 268.628998, - 280.950012, 7.500000, 230.949005, - 280.950012, 0.000000, 230.949005, - 275.941986, 7.500000, 227.153000, - 275.941986, 0.000000, 227.153000, - 232.375000, 7.500000, 194.149002, - 232.375000, 0.000000, 194.149002, - 220.886993, 7.500000, 186.345001, - 220.886993, 0.000000, 186.345001, - 173.656006, 24.000000, -177.580002, - 173.656006, 0.000000, -177.580002, - 181.820999, 24.000000, -183.869995, - 181.820999, 0.000000, -183.869995, - 182.582993, 24.000000, -184.460007, - 182.582993, 0.000000, -184.460007, - 182.121994, 24.000000, -185.050003, - 182.121994, 0.000000, -185.050003, - 173.214996, 24.000000, -196.615997, - 173.214996, 0.000000, -196.615997, - 170.699997, 24.000000, -199.878006, - 170.699997, 0.000000, -199.878006, - 169.878006, 24.000000, -200.947006, - 169.878006, 0.000000, -200.947006, - 160.951004, 24.000000, -194.078003, - 160.951004, 0.000000, -194.078003, - 161.705994, 24.000000, -193.098007, - 161.705994, 0.000000, -193.098007, - 164.013000, 24.000000, -190.104004, - 164.013000, 0.000000, -190.104004, - 173.214996, 7.000000, -196.615997, - 182.121994, 7.000000, -185.050003, - 184.182007, 7.000000, -186.630997, - 184.182007, 0.000000, -186.630997, - 182.917999, 7.000000, -188.278000, - 182.917999, 0.000000, -188.278000, - 175.274002, 7.000000, -198.197006, - 175.274002, 0.000000, -198.197006, - 181.820999, 7.000000, -183.869995, - 173.656006, 7.000000, -177.580002, - 164.013000, 7.000000, -190.104004, - 159.184998, 7.000000, -184.393005, - 159.184998, 0.000000, -184.393005, - 166.100006, 7.000000, -175.376007, - 166.100006, 0.000000, -175.376007, - 167.697998, 7.000000, -174.429001, - 167.697998, 0.000000, -174.429001, - 169.537003, 7.000000, -173.828003, - 169.537003, 0.000000, -173.828003, - 171.416000, 7.000000, -173.794998, - 171.416000, 0.000000, -173.794998, - 173.569000, 7.000000, -174.317993, - 173.569000, 0.000000, -174.317993, - 183.826996, 7.000000, -179.317001, - 183.826996, 0.000000, -179.317001, - -152.479996, 10.000000, 161.610992, - -152.479996, 0.000000, 161.610992, - -146.641998, 10.000000, 165.563004, - -146.641998, 0.000000, 165.563004, - -139.098999, 10.000000, 155.389008, - -139.098999, 0.000000, 155.389008, - -138.009003, 10.000000, 156.223007, - -138.009003, 0.000000, 156.223007, - -137.727997, 10.000000, 155.822998, - -137.727997, 0.000000, 155.822998, - -132.190994, 10.000000, 147.496002, - -132.190994, 0.000000, 147.496002, - -132.190994, 10.000000, 147.485001, - -132.190994, 0.000000, 147.485001, - -131.949997, 10.000000, 147.128998, - -131.949997, 0.000000, 147.128998, - -139.600006, 10.000000, 142.042007, - -139.600006, 0.000000, 142.042007, - -142.375000, 10.000000, 146.371994, - -142.375000, 0.000000, 146.371994, - -146.199997, 10.000000, 152.705994, - -146.199997, 0.000000, 152.705994, - -146.621994, 10.000000, 153.328995, - -146.621994, 0.000000, 153.328995, - -147.423996, 10.000000, 154.464996, - -147.423996, 0.000000, 154.464996, - -124.220001, 7.500000, 152.238007, - -124.220001, 0.000000, 152.238007, - -130.779999, 7.500000, 147.863998, - -130.779999, 0.000000, 147.863998, - -130.906998, 7.500000, 148.063995, - -130.906998, 0.000000, 148.063995, - -130.867004, 7.500000, 148.085999, - -130.867004, 0.000000, 148.085999, - -136.832001, 7.500000, 157.125000, - -136.832001, 0.000000, 157.125000, - -138.009003, 7.500000, 156.223007, - -139.098999, 7.500000, 155.389008, - -146.641998, 7.500000, 165.563004, - -146.514999, 7.500000, 165.641006, - -146.514999, 0.000000, 165.641006, - -146.602005, 7.500000, 165.774002, - -146.602005, 0.000000, 165.774002, - -138.992004, 7.500000, 171.384995, - -138.992004, 0.000000, 171.384995, - -132.477997, 7.500000, 176.182007, - -132.477997, 0.000000, 176.182007, - -118.456001, 7.500000, 158.104996, - -118.456001, 0.000000, 158.104996, - -118.803001, 7.500000, 155.845001, - -118.803001, 0.000000, 155.845001, - 101.963997, 7.500000, -119.926003, - 101.963997, 0.000000, -119.926003, - 102.191002, 7.500000, -120.492996, - 102.191002, 0.000000, -120.492996, - 105.032997, 7.500000, -127.628998, - 105.032997, 0.000000, -127.628998, - 105.266998, 7.500000, -128.218994, - 105.266998, 0.000000, -128.218994, - 104.029999, 7.500000, -128.709000, - 104.029999, 0.000000, -128.709000, - 103.569000, 7.500000, -128.897995, - 103.569000, 0.000000, -128.897995, - 102.833000, 7.500000, -129.188004, - 102.833000, 0.000000, -129.188004, - 102.098000, 7.500000, -129.488007, - 102.098000, 0.000000, -129.488007, - 101.917000, 7.500000, -129.565994, - 101.917000, 0.000000, -129.565994, - 100.927002, 7.500000, -129.955994, - 100.927002, 0.000000, -129.955994, - 98.788002, 7.500000, -130.824005, - 98.788002, 0.000000, -130.824005, - 95.484001, 7.500000, -122.530998, - 95.484001, 0.000000, -122.530998, - 97.624001, 7.500000, -121.674004, - 97.624001, 0.000000, -121.674004, - 98.747002, 7.500000, -121.217003, - 98.747002, 0.000000, -121.217003, - 99.175003, 7.500000, -121.050003, - 99.175003, 0.000000, -121.050003, - 99.683998, 7.500000, -120.849998, - 99.683998, 0.000000, -120.849998, - 100.165001, 7.500000, -120.649002, - 100.165001, 0.000000, -120.649002, - 100.626999, 7.500000, -120.471001, - 100.626999, 0.000000, -120.471001, - 103.086998, 7.500000, -120.137001, - 103.086998, 0.000000, -120.137001, - 111.633003, 7.500000, -116.709000, - 111.633003, 0.000000, -116.709000, - 114.482002, 7.500000, -123.833000, - 114.482002, 0.000000, -123.833000, - 112.462997, 7.500000, -124.646004, - 112.462997, 0.000000, -124.646004, - 112.008003, 7.500000, -124.823997, - 112.008003, 0.000000, -124.823997, - 111.546997, 7.500000, -125.013000, - 111.546997, 0.000000, -125.013000, - 111.084999, 7.500000, -125.202003, - 111.084999, 0.000000, -125.202003, - 110.624001, 7.500000, -125.380997, - 110.624001, 0.000000, -125.380997, - 105.948997, 7.500000, -127.262001, - 105.948997, 0.000000, -127.262001, - 179.126007, 14.000000, 157.804001, - 179.126007, 13.700000, 157.804001, - 183.856995, 14.000000, 152.026993, - 183.856995, 13.700000, 152.026993, - 188.587997, 14.000000, 146.250000, - 188.587997, 13.700000, 146.250000, - 134.356003, 14.000000, 101.801003, - 134.356003, 13.700000, 101.801003, - 129.625000, 14.000000, 107.578499, - 129.625000, 13.700000, 107.578499, - 129.160004, 14.000000, 108.135002, - 129.160004, 13.700000, 108.135002, - 124.893997, 14.000000, 113.356003, - 124.893997, 13.700000, 113.356003, - 179.126007, 14.000311, 157.804001, - 183.856995, 20.000000, 152.026993, - 188.587997, 14.000311, 146.250000, - 129.625000, 20.000000, 107.578499, - 129.160004, 19.417305, 108.135002, - 124.893997, 14.000001, 113.356003, - 135.298996, 14.000000, 100.554001, - 135.298996, 13.700000, 100.554001, - 124.686996, 14.000000, 113.634003, - 124.686996, 13.700000, 113.634003, - 126.332001, 14.000000, 115.158997, - 126.332001, 13.700000, 115.158997, - 127.615997, 14.000000, 116.349998, - 127.615997, 13.700000, 116.349998, - 132.089005, 14.000000, 120.490997, - 132.089005, 13.700000, 120.490997, - 142.654999, 14.000000, 130.153000, - 142.654999, 13.700000, 130.153000, - 150.753006, 14.000000, 137.556000, - 150.753006, 13.700000, 137.556000, - 164.962997, 14.000000, 148.554001, - 164.962997, 13.700000, 148.554001, - 171.362000, 14.000000, 153.507004, - 171.362000, 13.700000, 153.507004, - 173.207993, 14.000000, 154.977005, - 173.207993, 13.700000, 154.977005, - 175.388000, 14.000000, 156.712997, - 175.388000, 13.700000, 156.712997, - 180.591003, 14.000000, 160.843002, - 180.591003, 13.700000, 160.843002, - 195.048004, 14.000000, 170.783997, - 195.048004, 13.700000, 170.783997, - 195.770004, 14.000000, 169.537003, - 195.770004, 13.700000, 169.537003, - 204.871002, 14.000000, 175.414001, - 204.871002, 13.700000, 175.414001, - 220.886993, 14.000000, 186.345001, - 220.886993, 13.700000, 186.345001, - 232.375000, 14.000000, 194.149002, - 232.375000, 13.700000, 194.149002, - 275.941986, 14.000000, 227.153000, - 275.941986, 13.700000, 227.153000, - 278.114990, 14.000000, 224.492996, - 278.114990, 13.700000, 224.492996, - 280.562988, 14.000000, 221.498993, - 280.562988, 13.700000, 221.498993, - 255.371994, 14.000000, 201.662003, - 255.371994, 13.700000, 201.662003, - 268.231995, 14.000000, 185.354996, - 268.231995, 13.700000, 185.354996, - 284.955994, 14.000000, 165.507004, - 284.955994, 13.700000, 165.507004, - 280.963989, 14.000000, 162.311996, - 280.963989, 13.700000, 162.311996, - 277.259003, 14.000000, 159.339996, - 277.259003, 13.700000, 159.339996, - 271.575012, 14.000000, 166.932007, - 271.575012, 13.700000, 166.932007, - 270.404999, 14.000000, 166.119003, - 270.404999, 13.700000, 166.119003, - 269.643005, 14.000000, 167.166000, - 269.643005, 13.700000, 167.166000, - 261.283997, 14.000000, 178.498001, - 261.283997, 13.700000, 178.498001, - 252.985001, 14.000000, 189.751999, - 252.985001, 13.700000, 189.751999, - 247.067001, 14.000000, 189.595993, - 247.067001, 13.700000, 189.595993, - 240.962006, 14.000000, 184.720001, - 240.962006, 13.700000, 184.720001, - 239.149002, 14.000000, 183.440002, - 239.149002, 13.700000, 183.440002, - 237.444000, 14.000000, 182.238007, - 237.444000, 13.700000, 182.238007, - 226.899002, 14.000000, 174.356995, - 226.899002, 13.700000, 174.356995, - 221.367996, 14.000000, 170.227005, - 221.367996, 13.700000, 170.227005, - 217.089005, 14.000000, 167.020996, - 217.089005, 13.700000, 167.020996, - 213.697998, 14.000000, 164.483002, - 213.697998, 13.700000, 164.483002, - 209.772995, 14.000000, 161.554993, - 209.772995, 13.700000, 161.554993, - 207.112000, 14.000000, 159.563004, - 207.112000, 13.700000, 159.563004, - 203.688004, 14.000000, 157.003006, - 203.688004, 13.700000, 157.003006, - 198.966995, 14.000000, 153.106995, - 198.966995, 13.700000, 153.106995, - 197.007004, 14.000000, 151.492996, - 197.007004, 13.700000, 151.492996, - 188.962997, 14.000000, 144.847000, - 188.962997, 13.700000, 144.847000, - 186.703003, 14.000000, 142.988007, - 186.703003, 13.700000, 142.988007, - 181.024994, 14.000000, 138.289993, - 181.024994, 13.700000, 138.289993, - 139.345001, 14.000000, 103.893997, - 139.345001, 13.700000, 103.893997, - -162.566879, 0.000000, -42.736065, - -161.684143, 0.000000, -42.266209, - -162.613861, 0.000000, -42.647793, - -161.731125, 0.000000, -42.177933, - -162.613861, 2.000000, -42.647793, - -161.731125, 2.000000, -42.177933, - -162.566879, 2.000000, -42.736065, - -161.684143, 2.000000, -42.266209, - 186.349350, 0.000000, 142.631027, - 187.120331, 0.000000, 143.267883, - 186.285660, 0.000000, 142.708130, - 187.056656, 0.000000, 143.344971, - 186.285660, 2.000000, 142.708130, - 187.056656, 2.000000, 143.344971, - 186.349350, 2.000000, 142.631027, - 187.120331, 2.000000, 143.267883, - 134.014008, 0.000000, 99.146004, - 133.014008, 0.000000, 99.146004, - 134.014008, 0.000000, 99.045998, - 133.014008, 0.000000, 99.045998, - 134.014008, 2.000000, 99.045998, - 133.014008, 2.000000, 99.045998, - 134.014008, 2.000000, 99.146004, - 133.014008, 2.000000, 99.146004, - 135.832001, 0.000000, 86.366997, - 134.832001, 0.000000, 86.366997, - 135.832001, 0.000000, 86.266998, - 134.832001, 0.000000, 86.266998, - 135.832001, 2.000000, 86.266998, - 134.832001, 2.000000, 86.266998, - 135.832001, 2.000000, 86.366997, - 134.832001, 2.000000, 86.366997, - 163.360489, 0.000000, 50.172497, - 162.620819, 0.000000, 50.845470, - 163.293182, 0.000000, 50.098530, - 162.553513, 0.000000, 50.771503, - 163.293182, 2.000000, 50.098530, - 162.553513, 2.000000, 50.771503, - 163.360489, 2.000000, 50.172497, - 162.620819, 2.000000, 50.845470, - 239.528732, 0.000000, 183.769104, - 238.711624, 0.000000, 183.192612, - 239.586380, 0.000000, 183.687393, - 238.769272, 0.000000, 183.110901, - 239.586380, 2.000000, 183.687393, - 238.769272, 2.000000, 183.110901, - 239.528732, 2.000000, 183.769104, - 238.711624, 2.000000, 183.192612, - 207.482422, 0.000000, 159.902542, - 206.681671, 0.000000, 159.303528, - 207.542328, 0.000000, 159.822464, - 206.741577, 0.000000, 159.223465, - 207.542328, 2.000000, 159.822464, - 206.741577, 2.000000, 159.223465, - 207.482422, 2.000000, 159.902542, - 206.681671, 2.000000, 159.303528, - 261.621033, 0.000000, 178.125290, - 261.027466, 0.000000, 178.930069, - 261.540527, 0.000000, 178.065933, - 260.946991, 0.000000, 178.870712, - 261.540527, 2.000000, 178.065933, - 260.946991, 2.000000, 178.870712, - 261.621033, 2.000000, 178.125290, - 261.027466, 2.000000, 178.930069, - 227.269623, 0.000000, 174.696320, - 226.468521, 0.000000, 174.097794, - 227.329483, 0.000000, 174.616211, - 226.528381, 0.000000, 174.017685, - 227.329483, 2.000000, 174.616211, - 226.528381, 2.000000, 174.017685, - 227.269623, 2.000000, 174.696320, - 226.468521, 2.000000, 174.097794, - 221.738480, 0.000000, 170.566483, - 220.937637, 0.000000, 169.967606, - 221.798370, 0.000000, 170.486389, - 220.997528, 0.000000, 169.887527, - 221.798370, 2.000000, 170.486389, - 220.997528, 2.000000, 169.887527, - 221.738480, 2.000000, 170.566483, - 220.937637, 2.000000, 169.967606, - 217.459244, 0.000000, 167.360733, - 216.658813, 0.000000, 166.761307, - 217.519180, 0.000000, 167.280701, - 216.718765, 0.000000, 166.681259, - 217.519180, 2.000000, 167.280701, - 216.718765, 2.000000, 166.681259, - 217.459244, 2.000000, 167.360733, - 216.658813, 2.000000, 166.761307, - 214.068619, 0.000000, 164.822311, - 213.267517, 0.000000, 164.223785, - 214.128479, 0.000000, 164.742203, - 213.327377, 0.000000, 164.143677, - 214.128479, 2.000000, 164.742203, - 213.327377, 2.000000, 164.143677, - 214.068619, 2.000000, 164.822311, - 213.267517, 2.000000, 164.223785 - ], - "parts": [ - { - "id": "shape1_part1", - "type": "TRIANGLES", - "indices": [ - 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4, - 4, 5, 6, 5, 7, 6, 6, 7, 8, 7, 9, 8, - 8, 9, 10, 9, 11, 10, 10, 11, 12, 11, 13, 12, - 12, 13, 14, 13, 15, 14, 14, 15, 16, 15, 17, 16, - 16, 17, 18, 17, 19, 18, 18, 19, 20, 19, 21, 20, - 20, 21, 22, 21, 23, 22, 22, 23, 24, 23, 25, 24, - 24, 25, 26, 25, 27, 26, 26, 27, 28, 27, 29, 28, - 28, 29, 30, 29, 31, 30, 30, 31, 32, 31, 33, 32, - 32, 33, 34, 33, 35, 34, 34, 35, 36, 35, 37, 36, - 36, 37, 38, 37, 39, 38, 38, 39, 40, 39, 41, 40, - 40, 41, 42, 41, 43, 42, 42, 43, 44, 43, 45, 44, - 44, 45, 46, 45, 47, 46, 46, 47, 48, 47, 49, 48, - 48, 49, 50, 49, 51, 50, 50, 51, 52, 51, 53, 52, - 52, 53, 54, 53, 55, 54, 54, 55, 56, 55, 57, 56, - 56, 57, 58, 57, 59, 58, 58, 59, 60, 59, 61, 60, - 60, 61, 62, 61, 63, 62, 62, 63, 64, 63, 65, 64, - 64, 65, 66, 65, 67, 66, 66, 67, 68, 67, 69, 68, - 68, 69, 70, 69, 71, 70, 70, 71, 72, 71, 73, 72, - 72, 73, 74, 73, 75, 74, 74, 75, 76, 75, 77, 76, - 76, 77, 78, 77, 79, 78, 78, 79, 80, 79, 81, 80, - 80, 81, 82, 81, 83, 82, 82, 83, 84, 83, 85, 84, - 84, 85, 86, 85, 87, 86, 86, 87, 88, 87, 89, 88, - 88, 89, 90, 89, 91, 90, 90, 91, 0, 91, 1, 0, - 0, 0, 2, 0, 2, 2, 2, 2, 4, 2, 4, 4, - 4, 4, 6, 4, 6, 6, 6, 6, 8, 6, 8, 8, - 8, 8, 10, 8, 10, 10, 10, 10, 12, 10, 12, 12, - 12, 12, 14, 12, 14, 14, 14, 14, 16, 14, 16, 16, - 16, 16, 18, 16, 18, 18, 18, 18, 20, 18, 20, 20, - 20, 20, 22, 20, 22, 22, 22, 22, 24, 22, 24, 24, - 24, 24, 26, 24, 26, 26, 26, 26, 28, 26, 28, 28, - 28, 28, 30, 28, 30, 30, 30, 30, 32, 30, 32, 32, - 32, 32, 34, 32, 34, 34, 34, 34, 36, 34, 36, 36, - 36, 36, 38, 36, 38, 38, 38, 38, 40, 38, 40, 40, - 40, 40, 42, 40, 42, 42, 42, 42, 44, 42, 44, 44, - 44, 44, 46, 44, 46, 46, 46, 46, 48, 46, 48, 48, - 48, 48, 50, 48, 50, 50, 50, 50, 52, 50, 52, 52, - 52, 52, 54, 52, 54, 54, 54, 54, 56, 54, 56, 56, - 56, 56, 58, 56, 58, 58, 58, 58, 60, 58, 60, 60, - 60, 60, 62, 60, 62, 62, 62, 62, 64, 62, 64, 64, - 64, 64, 66, 64, 66, 66, 66, 66, 68, 66, 68, 68, - 68, 68, 70, 68, 70, 70, 70, 70, 72, 70, 72, 72, - 72, 72, 74, 72, 74, 74, 74, 74, 76, 74, 76, 76, - 76, 76, 78, 76, 78, 78, 78, 78, 80, 78, 80, 80, - 80, 80, 82, 80, 82, 82, 82, 82, 84, 82, 84, 84, - 84, 84, 86, 84, 86, 86, 86, 86, 88, 86, 88, 88, - 88, 88, 90, 88, 90, 90, 90, 90, 0, 90, 0, 0, - 92, 93, 94, 93, 95, 94, 94, 95, 96, 95, 97, 96, - 96, 97, 98, 97, 99, 98, 98, 99, 100, 99, 101, 100, - 100, 101, 102, 101, 103, 102, 102, 103, 104, 103, 105, 104, - 104, 105, 106, 105, 107, 106, 106, 107, 108, 107, 109, 108, - 108, 109, 92, 109, 93, 92, 92, 92, 94, 92, 94, 94, - 94, 94, 96, 94, 96, 96, 96, 96, 98, 96, 98, 98, - 98, 98, 100, 98, 100, 100, 100, 100, 102, 100, 102, 102, - 102, 102, 104, 102, 104, 104, 104, 104, 106, 104, 106, 106, - 106, 106, 108, 106, 108, 108, 108, 108, 92, 108, 92, 92, - 110, 111, 112, 111, 113, 112, 112, 113, 114, 113, 115, 114, - 114, 115, 116, 115, 117, 116, 116, 117, 118, 117, 119, 118, - 118, 119, 120, 119, 121, 120, 120, 121, 110, 121, 111, 110, - 110, 110, 112, 110, 112, 112, 112, 112, 114, 112, 114, 114, - 114, 114, 116, 114, 116, 116, 116, 116, 118, 116, 118, 118, - 118, 118, 120, 118, 120, 120, 120, 120, 110, 120, 110, 110, - 142, 143, 144, 143, 145, 144, 144, 145, 146, 145, 147, 146, - 146, 147, 148, 147, 149, 148, 148, 149, 150, 149, 151, 150, - 150, 151, 152, 151, 153, 152, 152, 153, 154, 153, 155, 154, - 154, 155, 156, 155, 157, 156, 156, 157, 158, 157, 159, 158, - 158, 159, 142, 159, 143, 142, 142, 142, 144, 142, 144, 144, - 144, 144, 146, 144, 146, 146, 146, 146, 148, 146, 148, 148, - 148, 148, 150, 148, 150, 150, 150, 150, 152, 150, 152, 152, - 152, 152, 154, 152, 154, 154, 154, 154, 156, 154, 156, 156, - 156, 156, 158, 156, 158, 158, 158, 158, 142, 158, 142, 142, - 160, 161, 162, 161, 163, 162, 162, 163, 164, 163, 165, 164, - 164, 165, 166, 165, 167, 166, 166, 167, 168, 167, 169, 168, - 168, 169, 170, 169, 171, 170, 170, 171, 172, 171, 173, 172, - 172, 173, 174, 173, 175, 174, 174, 175, 176, 175, 177, 176, - 176, 177, 178, 177, 179, 178, 178, 179, 180, 179, 181, 180, - 180, 181, 182, 181, 183, 182, 182, 183, 184, 183, 185, 184, - 184, 185, 186, 185, 187, 186, 186, 187, 188, 187, 189, 188, - 188, 189, 190, 189, 191, 190, 190, 191, 192, 191, 193, 192, - 192, 193, 194, 193, 195, 194, 194, 195, 196, 195, 197, 196, - 196, 197, 198, 197, 199, 198, 198, 199, 160, 199, 161, 160, - 160, 160, 162, 160, 162, 162, 162, 162, 164, 162, 164, 164, - 164, 164, 166, 164, 166, 166, 166, 166, 168, 166, 168, 168, - 168, 168, 170, 168, 170, 170, 170, 170, 172, 170, 172, 172, - 172, 172, 174, 172, 174, 174, 174, 174, 176, 174, 176, 176, - 176, 176, 178, 176, 178, 178, 178, 178, 180, 178, 180, 180, - 180, 180, 182, 180, 182, 182, 182, 182, 184, 182, 184, 184, - 184, 184, 186, 184, 186, 186, 186, 186, 188, 186, 188, 188, - 188, 188, 190, 188, 190, 190, 190, 190, 192, 190, 192, 192, - 192, 192, 194, 192, 194, 194, 194, 194, 196, 194, 196, 196, - 196, 196, 198, 196, 198, 198, 198, 198, 160, 198, 160, 160, - 200, 143, 201, 143, 159, 201, 201, 159, 202, 159, 157, 202, - 202, 157, 203, 157, 155, 203, 203, 155, 204, 155, 153, 204, - 204, 153, 205, 153, 151, 205, 205, 151, 206, 151, 149, 206, - 206, 149, 207, 149, 147, 207, 207, 147, 208, 147, 145, 208, - 208, 145, 200, 145, 143, 200, 200, 200, 201, 200, 201, 201, - 201, 201, 202, 201, 202, 202, 202, 202, 203, 202, 203, 203, - 203, 203, 204, 203, 204, 204, 204, 204, 205, 204, 205, 205, - 205, 205, 206, 205, 206, 206, 206, 206, 207, 206, 207, 207, - 207, 207, 208, 207, 208, 208, 208, 208, 200, 208, 200, 200, - 209, 210, 211, 210, 212, 211, 211, 212, 213, 212, 214, 213, - 213, 214, 215, 214, 216, 215, 215, 216, 217, 216, 218, 217, - 217, 218, 219, 218, 220, 219, 219, 220, 221, 220, 222, 221, - 221, 222, 223, 222, 224, 223, 223, 224, 225, 224, 226, 225, - 225, 226, 227, 226, 228, 227, 227, 228, 229, 228, 230, 229, - 229, 230, 209, 230, 210, 209, 209, 209, 211, 209, 211, 211, - 211, 211, 213, 211, 213, 213, 213, 213, 215, 213, 215, 215, - 215, 215, 217, 215, 217, 217, 217, 217, 219, 217, 219, 219, - 219, 219, 221, 219, 221, 221, 221, 221, 223, 221, 223, 223, - 223, 223, 225, 223, 225, 225, 225, 225, 227, 225, 227, 227, - 227, 227, 229, 227, 229, 229, 229, 229, 209, 229, 209, 209, - 231, 232, 32, 232, 33, 32, 32, 33, 30, 33, 31, 30, - 30, 31, 28, 31, 29, 28, 28, 29, 26, 29, 27, 26, - 26, 27, 233, 27, 234, 233, 233, 234, 235, 234, 236, 235, - 235, 236, 237, 236, 238, 237, 237, 238, 239, 238, 240, 239, - 239, 240, 241, 240, 242, 241, 241, 242, 243, 242, 244, 243, - 243, 244, 245, 244, 246, 245, 245, 246, 247, 246, 248, 247, - 247, 248, 249, 248, 250, 249, 249, 250, 251, 250, 252, 251, - 251, 252, 253, 252, 254, 253, 253, 254, 255, 254, 256, 255, - 255, 256, 231, 256, 232, 231, 231, 231, 32, 231, 32, 32, - 32, 32, 30, 32, 30, 30, 30, 30, 28, 30, 28, 28, - 28, 28, 26, 28, 26, 26, 26, 26, 233, 26, 233, 233, - 233, 233, 235, 233, 235, 235, 235, 235, 237, 235, 237, 237, - 237, 237, 239, 237, 239, 239, 239, 239, 241, 239, 241, 241, - 241, 241, 243, 241, 243, 243, 243, 243, 245, 243, 245, 245, - 245, 245, 247, 245, 247, 247, 247, 247, 249, 247, 249, 249, - 249, 249, 251, 249, 251, 251, 251, 251, 253, 251, 253, 253, - 253, 253, 255, 253, 255, 255, 255, 255, 231, 255, 231, 231, - 257, 258, 259, 258, 260, 259, 259, 260, 261, 260, 262, 261, - 261, 262, 263, 262, 264, 263, 263, 264, 265, 264, 266, 265, - 265, 266, 267, 266, 268, 267, 267, 268, 269, 268, 270, 269, - 269, 270, 271, 270, 272, 271, 271, 272, 257, 272, 258, 257, - 257, 257, 259, 257, 259, 259, 259, 259, 261, 259, 261, 261, - 261, 261, 263, 261, 263, 263, 263, 263, 265, 263, 265, 265, - 265, 265, 267, 265, 267, 267, 267, 267, 269, 267, 269, 269, - 269, 269, 271, 269, 271, 271, 271, 271, 257, 271, 257, 257, - 273, 274, 275, 274, 276, 275, 275, 276, 277, 276, 278, 277, - 277, 278, 279, 278, 280, 279, 279, 280, 273, 280, 274, 273, - 273, 273, 275, 273, 275, 275, 275, 275, 277, 275, 277, 277, - 277, 277, 279, 277, 279, 279, 279, 279, 273, 279, 273, 273, - 281, 282, 283, 282, 284, 283, 283, 284, 285, 284, 286, 285, - 285, 286, 287, 286, 288, 287, 287, 288, 289, 288, 290, 289, - 289, 290, 281, 290, 282, 281, 281, 281, 283, 281, 283, 283, - 283, 283, 285, 283, 285, 285, 285, 285, 287, 285, 287, 287, - 287, 287, 289, 287, 289, 289, 289, 289, 281, 289, 281, 281, - 291, 292, 293, 292, 294, 293, 293, 294, 295, 294, 296, 295, - 295, 296, 297, 296, 298, 297, 297, 298, 299, 298, 300, 299, - 299, 300, 301, 300, 302, 301, 301, 302, 303, 302, 304, 303, - 303, 304, 291, 304, 292, 291, 291, 291, 293, 291, 293, 293, - 293, 293, 295, 293, 295, 295, 295, 295, 297, 295, 297, 297, - 297, 297, 299, 297, 299, 299, 299, 299, 301, 299, 301, 301, - 301, 301, 303, 301, 303, 303, 303, 303, 291, 303, 291, 291, - 305, 306, 307, 306, 308, 307, 307, 308, 309, 308, 284, 309, - 309, 284, 310, 284, 282, 310, 310, 282, 305, 282, 306, 305, - 305, 305, 307, 305, 307, 307, 307, 307, 309, 307, 309, 309, - 309, 309, 310, 309, 310, 310, 310, 310, 305, 310, 305, 305, - 311, 312, 313, 312, 314, 313, 313, 314, 315, 314, 316, 315, - 315, 316, 317, 316, 318, 317, 317, 318, 311, 318, 312, 311, - 311, 311, 313, 311, 313, 313, 313, 313, 315, 313, 315, 315, - 315, 315, 317, 315, 317, 317, 317, 317, 311, 317, 311, 311, - 345, 346, 347, 346, 348, 347, 347, 348, 349, 348, 350, 349, - 349, 350, 351, 350, 352, 351, 351, 352, 353, 352, 354, 353, - 353, 354, 355, 354, 356, 355, 355, 356, 357, 356, 358, 357, - 357, 358, 359, 358, 360, 359, 359, 360, 361, 360, 362, 361, - 361, 362, 363, 362, 364, 363, 363, 364, 365, 364, 366, 365, - 365, 366, 367, 366, 368, 367, 367, 368, 345, 368, 346, 345, - 345, 345, 347, 345, 347, 347, 347, 347, 349, 347, 349, 349, - 349, 349, 351, 349, 351, 351, 351, 351, 353, 351, 353, 353, - 353, 353, 355, 353, 355, 355, 355, 355, 357, 355, 357, 357, - 357, 357, 359, 357, 359, 359, 359, 359, 361, 359, 361, 361, - 361, 361, 363, 361, 363, 363, 363, 363, 365, 363, 365, 365, - 365, 365, 367, 365, 367, 367, 367, 367, 345, 367, 345, 345, - 369, 360, 370, 360, 358, 370, 370, 358, 371, 358, 356, 371, - 371, 356, 372, 356, 354, 372, 372, 354, 373, 354, 352, 373, - 373, 352, 374, 352, 350, 374, 374, 350, 375, 350, 376, 375, - 375, 376, 377, 376, 378, 377, 377, 378, 379, 378, 380, 379, - 379, 380, 381, 380, 382, 381, 381, 382, 383, 382, 384, 383, - 383, 384, 385, 384, 386, 385, 385, 386, 387, 386, 388, 387, - 387, 388, 369, 388, 360, 369, 369, 369, 370, 369, 370, 370, - 370, 370, 371, 370, 371, 371, 371, 371, 372, 371, 372, 372, - 372, 372, 373, 372, 373, 373, 373, 373, 374, 373, 374, 374, - 374, 374, 375, 374, 375, 375, 375, 375, 377, 375, 377, 377, - 377, 377, 379, 377, 379, 379, 379, 379, 381, 379, 381, 381, - 381, 381, 383, 381, 383, 383, 383, 383, 385, 383, 385, 385, - 385, 385, 387, 385, 387, 387, 387, 387, 369, 387, 369, 369, - 389, 390, 391, 390, 392, 391, 391, 392, 393, 392, 394, 393, - 393, 394, 395, 394, 396, 395, 395, 396, 397, 396, 398, 397, - 397, 398, 399, 398, 400, 399, 399, 400, 389, 400, 390, 389, - 389, 389, 391, 389, 391, 391, 391, 391, 393, 391, 393, 393, - 393, 393, 395, 393, 395, 395, 395, 395, 397, 395, 397, 397, - 397, 397, 399, 397, 399, 399, 399, 399, 389, 399, 389, 389, - 401, 402, 403, 402, 404, 403, 403, 404, 405, 404, 406, 405, - 405, 406, 407, 406, 408, 407, 407, 408, 409, 408, 410, 409, - 409, 410, 411, 410, 412, 411, 411, 412, 413, 412, 414, 413, - 413, 414, 415, 414, 416, 415, 415, 416, 401, 416, 402, 401, - 401, 401, 403, 401, 403, 403, 403, 403, 405, 403, 405, 405, - 405, 405, 407, 405, 407, 407, 407, 407, 409, 407, 409, 409, - 409, 409, 411, 409, 411, 411, 411, 411, 413, 411, 413, 413, - 413, 413, 415, 413, 415, 415, 415, 415, 401, 415, 401, 401, - 417, 418, 419, 418, 420, 419, 419, 420, 421, 420, 422, 421, - 421, 422, 423, 422, 424, 423, 423, 424, 425, 424, 426, 425, - 425, 426, 427, 426, 428, 427, 427, 428, 429, 428, 430, 429, - 429, 430, 431, 430, 432, 431, 431, 432, 433, 432, 434, 433, - 433, 434, 417, 434, 418, 417, 417, 417, 419, 417, 419, 419, - 419, 419, 421, 419, 421, 421, 421, 421, 423, 421, 423, 423, - 423, 423, 425, 423, 425, 425, 425, 425, 427, 425, 427, 427, - 427, 427, 429, 427, 429, 429, 429, 429, 431, 429, 431, 431, - 431, 431, 433, 431, 433, 433, 433, 433, 417, 433, 417, 417, - 435, 430, 436, 430, 437, 436, 436, 437, 438, 437, 439, 438, - 438, 439, 440, 439, 441, 440, 440, 441, 442, 441, 443, 442, - 442, 443, 444, 443, 445, 444, 444, 445, 446, 445, 447, 446, - 446, 447, 448, 447, 418, 448, 448, 418, 449, 418, 434, 449, - 449, 434, 450, 434, 432, 450, 450, 432, 435, 432, 430, 435, - 435, 435, 436, 435, 436, 436, 436, 436, 438, 436, 438, 438, - 438, 438, 440, 438, 440, 440, 440, 440, 442, 440, 442, 442, - 442, 442, 444, 442, 444, 444, 444, 444, 446, 444, 446, 446, - 446, 446, 448, 446, 448, 448, 448, 448, 449, 448, 449, 449, - 449, 449, 450, 449, 450, 450, 450, 450, 435, 450, 435, 435, - 451, 420, 452, 420, 453, 452, 452, 453, 454, 453, 455, 454, - 454, 455, 456, 455, 457, 456, 456, 457, 458, 457, 459, 458, - 458, 459, 460, 459, 461, 460, 460, 461, 462, 461, 463, 462, - 462, 463, 464, 463, 465, 464, 464, 465, 466, 465, 467, 466, - 466, 467, 468, 467, 469, 468, 468, 469, 470, 469, 471, 470, - 470, 471, 472, 471, 473, 472, 472, 473, 474, 473, 439, 474, - 474, 439, 475, 439, 437, 475, 475, 437, 476, 437, 430, 476, - 476, 430, 477, 430, 428, 477, 477, 428, 478, 428, 426, 478, - 478, 426, 479, 426, 424, 479, 479, 424, 480, 424, 422, 480, - 480, 422, 451, 422, 420, 451, 451, 451, 452, 451, 452, 452, - 452, 452, 454, 452, 454, 454, 454, 454, 456, 454, 456, 456, - 456, 456, 458, 456, 458, 458, 458, 458, 460, 458, 460, 460, - 460, 460, 462, 460, 462, 462, 462, 462, 464, 462, 464, 464, - 464, 464, 466, 464, 466, 466, 466, 466, 468, 466, 468, 468, - 468, 468, 470, 468, 470, 470, 470, 470, 472, 470, 472, 472, - 472, 472, 474, 472, 474, 474, 474, 474, 475, 474, 475, 475, - 475, 475, 476, 475, 476, 476, 476, 476, 477, 476, 477, 477, - 477, 477, 478, 477, 478, 478, 478, 478, 479, 478, 479, 479, - 479, 479, 480, 479, 480, 480, 480, 480, 451, 480, 451, 451, - 295, 296, 293, 296, 294, 293, 293, 294, 481, 294, 482, 481, - 481, 482, 483, 482, 484, 483, 483, 484, 295, 484, 296, 295, - 295, 295, 293, 295, 293, 293, 293, 293, 481, 293, 481, 481, - 481, 481, 483, 481, 483, 483, 483, 483, 295, 483, 295, 295, - 485, 486, 487, 486, 488, 487, 487, 488, 303, 488, 304, 303, - 303, 304, 301, 304, 302, 301, 301, 302, 299, 302, 300, 299, - 299, 300, 297, 300, 298, 297, 297, 298, 485, 298, 486, 485, - 485, 485, 487, 485, 487, 487, 487, 487, 303, 487, 303, 303, - 303, 303, 301, 303, 301, 301, 301, 301, 299, 301, 299, 299, - 299, 299, 297, 299, 297, 297, 297, 297, 485, 297, 485, 485, - 489, 490, 491, 490, 492, 491, 491, 492, 493, 492, 494, 493, - 493, 494, 495, 494, 496, 495, 495, 496, 489, 496, 490, 489, - 489, 489, 491, 489, 491, 491, 491, 491, 493, 491, 493, 493, - 493, 493, 495, 493, 495, 495, 495, 495, 489, 495, 489, 489, - 495, 496, 493, 496, 494, 493, 493, 494, 497, 494, 498, 497, - 497, 498, 499, 498, 500, 499, 499, 500, 501, 500, 502, 501, - 501, 502, 495, 502, 496, 495, 495, 495, 493, 495, 493, 493, - 493, 493, 497, 493, 497, 497, 497, 497, 499, 497, 499, 499, - 499, 499, 501, 499, 501, 501, 501, 501, 495, 501, 495, 495, - 503, 504, 499, 504, 500, 499, 499, 500, 497, 500, 498, 497, - 497, 498, 505, 498, 506, 505, 505, 506, 507, 506, 508, 507, - 507, 508, 503, 508, 504, 503, 503, 503, 499, 503, 499, 499, - 499, 499, 497, 499, 497, 497, 497, 497, 505, 497, 505, 505, - 505, 505, 507, 505, 507, 507, 507, 507, 503, 507, 503, 503, - 509, 510, 511, 510, 512, 511, 511, 512, 513, 512, 514, 513, - 513, 514, 515, 514, 516, 515, 515, 516, 517, 516, 518, 517, - 517, 518, 519, 518, 520, 519, 519, 520, 521, 520, 522, 521, - 521, 522, 509, 522, 510, 509, 509, 509, 511, 509, 511, 511, - 511, 511, 513, 511, 513, 513, 513, 513, 515, 513, 515, 515, - 515, 515, 517, 515, 517, 517, 517, 517, 519, 517, 519, 519, - 519, 519, 521, 519, 521, 521, 521, 521, 509, 521, 509, 509, - 523, 524, 525, 524, 526, 525, 525, 526, 527, 526, 528, 527, - 527, 528, 529, 528, 530, 529, 529, 530, 531, 530, 532, 531, - 531, 532, 533, 532, 534, 533, 533, 534, 535, 534, 536, 535, - 535, 536, 537, 536, 538, 537, 537, 538, 539, 538, 540, 539, - 539, 540, 541, 540, 542, 541, 541, 542, 543, 542, 544, 543, - 543, 544, 545, 544, 546, 545, 545, 546, 547, 546, 548, 547, - 547, 548, 523, 548, 524, 523, 523, 523, 525, 523, 525, 525, - 525, 525, 527, 525, 527, 527, 527, 527, 529, 527, 529, 529, - 529, 529, 531, 529, 531, 531, 531, 531, 533, 531, 533, 533, - 533, 533, 535, 533, 535, 535, 535, 535, 537, 535, 537, 537, - 537, 537, 539, 537, 539, 539, 539, 539, 541, 539, 541, 541, - 541, 541, 543, 541, 543, 543, 543, 543, 545, 543, 545, 545, - 545, 545, 547, 545, 547, 547, 547, 547, 523, 547, 523, 523, - 549, 550, 551, 550, 552, 551, 551, 552, 553, 552, 554, 553, - 553, 554, 555, 554, 556, 555, 555, 556, 114, 556, 115, 114, - 114, 115, 112, 115, 113, 112, 112, 113, 110, 113, 111, 110, - 110, 111, 557, 111, 558, 557, 557, 558, 559, 558, 560, 559, - 559, 560, 561, 560, 562, 561, 561, 562, 563, 562, 564, 563, - 563, 564, 565, 564, 566, 565, 565, 566, 567, 566, 568, 567, - 567, 568, 569, 568, 570, 569, 569, 570, 571, 570, 572, 571, - 571, 572, 573, 572, 574, 573, 573, 574, 549, 574, 550, 549, - 549, 549, 551, 549, 551, 551, 551, 551, 553, 551, 553, 553, - 553, 553, 555, 553, 555, 555, 555, 555, 114, 555, 114, 114, - 114, 114, 112, 114, 112, 112, 112, 112, 110, 112, 110, 110, - 110, 110, 557, 110, 557, 557, 557, 557, 559, 557, 559, 559, - 559, 559, 561, 559, 561, 561, 561, 561, 563, 561, 563, 563, - 563, 563, 565, 563, 565, 565, 565, 565, 567, 565, 567, 567, - 567, 567, 569, 567, 569, 569, 569, 569, 571, 569, 571, 571, - 571, 571, 573, 571, 573, 573, 573, 573, 549, 573, 549, 549, - 575, 576, 577, 576, 578, 577, 577, 578, 579, 578, 580, 579, - 579, 580, 581, 580, 582, 581, 581, 582, 583, 582, 584, 583, - 583, 584, 585, 584, 586, 585, 585, 586, 587, 586, 588, 587, - 587, 588, 589, 588, 590, 589, 589, 590, 591, 590, 592, 591, - 591, 592, 593, 592, 594, 593, 593, 594, 595, 594, 596, 595, - 595, 596, 597, 596, 598, 597, 597, 598, 599, 598, 600, 599, - 599, 600, 601, 600, 602, 601, 601, 602, 603, 602, 604, 603, - 603, 604, 605, 604, 532, 605, 605, 532, 606, 532, 530, 606, - 606, 530, 575, 530, 576, 575, 575, 575, 577, 575, 577, 577, - 577, 577, 579, 577, 579, 579, 579, 579, 581, 579, 581, 581, - 581, 581, 583, 581, 583, 583, 583, 583, 585, 583, 585, 585, - 585, 585, 587, 585, 587, 587, 587, 587, 589, 587, 589, 589, - 589, 589, 591, 589, 591, 591, 591, 591, 593, 591, 593, 593, - 593, 593, 595, 593, 595, 595, 595, 595, 597, 595, 597, 597, - 597, 597, 599, 597, 599, 599, 599, 599, 601, 599, 601, 601, - 601, 601, 603, 601, 603, 603, 603, 603, 605, 603, 605, 605, - 605, 605, 606, 605, 606, 606, 606, 606, 575, 606, 575, 575, - 607, 608, 609, 608, 610, 609, 609, 610, 611, 610, 612, 611, - 611, 612, 613, 612, 614, 613, 613, 614, 581, 614, 582, 581, - 581, 582, 579, 582, 580, 579, 579, 580, 607, 580, 608, 607, - 607, 607, 609, 607, 609, 609, 609, 609, 611, 609, 611, 611, - 611, 611, 613, 611, 613, 613, 613, 613, 581, 613, 581, 581, - 581, 581, 579, 581, 579, 579, 579, 579, 607, 579, 607, 607, - 615, 616, 617, 616, 618, 617, 617, 618, 619, 618, 510, 619, - 619, 510, 620, 510, 522, 620, 620, 522, 621, 522, 520, 621, - 621, 520, 615, 520, 616, 615, 615, 615, 617, 615, 617, 617, - 617, 617, 619, 617, 619, 619, 619, 619, 620, 619, 620, 620, - 620, 620, 621, 620, 621, 621, 621, 621, 615, 621, 615, 615, - 622, 623, 624, 623, 534, 624, 624, 534, 605, 534, 532, 605, - 605, 532, 603, 532, 604, 603, 603, 604, 622, 604, 623, 622, - 622, 622, 624, 622, 624, 624, 624, 624, 605, 624, 605, 605, - 605, 605, 603, 605, 603, 603, 603, 603, 622, 603, 622, 622, - 625, 626, 627, 626, 628, 627, 627, 628, 629, 628, 630, 629, - 629, 630, 631, 630, 632, 631, 631, 632, 625, 632, 626, 625, - 625, 625, 627, 625, 627, 627, 627, 627, 629, 627, 629, 629, - 629, 629, 631, 629, 631, 631, 631, 631, 625, 631, 625, 625, - 633, 634, 635, 634, 538, 635, 635, 538, 636, 538, 536, 636, - 636, 536, 624, 536, 534, 624, 624, 534, 622, 534, 623, 622, - 622, 623, 637, 623, 638, 637, 637, 638, 639, 638, 640, 639, - 639, 640, 633, 640, 634, 633, 633, 633, 635, 633, 635, 635, - 635, 635, 636, 635, 636, 636, 636, 636, 624, 636, 624, 624, - 624, 624, 622, 624, 622, 622, 622, 622, 637, 622, 637, 637, - 637, 637, 639, 637, 639, 639, 639, 639, 633, 639, 633, 633, - 641, 642, 643, 642, 644, 643, 643, 644, 645, 644, 646, 645, - 645, 646, 647, 646, 542, 647, 647, 542, 648, 542, 540, 648, - 648, 540, 649, 540, 650, 649, 649, 650, 651, 650, 652, 651, - 651, 652, 653, 652, 654, 653, 653, 654, 655, 654, 656, 655, - 655, 656, 641, 656, 642, 641, 641, 641, 643, 641, 643, 643, - 643, 643, 645, 643, 645, 645, 645, 645, 647, 645, 647, 647, - 647, 647, 648, 647, 648, 648, 648, 648, 649, 648, 649, 649, - 649, 649, 651, 649, 651, 651, 651, 651, 653, 651, 653, 653, - 653, 653, 655, 653, 655, 655, 655, 655, 641, 655, 641, 641, - 668, 669, 670, 669, 671, 670, 670, 671, 672, 671, 673, 672, - 672, 673, 674, 673, 675, 674, 674, 675, 668, 675, 669, 668, - 668, 668, 670, 668, 670, 670, 670, 670, 672, 670, 672, 672, - 672, 672, 674, 672, 674, 674, 674, 674, 668, 674, 668, 668, - 120, 121, 118, 121, 119, 118, 118, 119, 676, 119, 677, 676, - 676, 677, 674, 677, 675, 674, 674, 675, 672, 675, 673, 672, - 672, 673, 120, 673, 121, 120, 120, 120, 118, 120, 118, 118, - 118, 118, 676, 118, 676, 676, 676, 676, 674, 676, 674, 674, - 674, 674, 672, 674, 672, 672, 672, 672, 120, 672, 120, 120, - 670, 671, 668, 671, 669, 668, 668, 669, 678, 669, 679, 678, - 678, 679, 680, 679, 681, 680, 680, 681, 682, 681, 683, 682, - 682, 683, 684, 683, 685, 684, 684, 685, 686, 685, 687, 686, - 686, 687, 670, 687, 671, 670, 670, 670, 668, 670, 668, 668, - 668, 668, 678, 668, 678, 678, 678, 678, 680, 678, 680, 680, - 680, 680, 682, 680, 682, 682, 682, 682, 684, 682, 684, 684, - 684, 684, 686, 684, 686, 686, 686, 686, 670, 686, 670, 670, - 688, 689, 690, 689, 691, 690, 690, 691, 692, 691, 693, 692, - 692, 693, 694, 693, 695, 694, 694, 695, 696, 695, 697, 696, - 696, 697, 698, 697, 699, 698, 698, 699, 700, 699, 701, 700, - 700, 701, 702, 701, 703, 702, 702, 703, 704, 703, 705, 704, - 704, 705, 688, 705, 689, 688, 688, 688, 690, 688, 690, 690, - 690, 690, 692, 690, 692, 692, 692, 692, 694, 692, 694, 694, - 694, 694, 696, 694, 696, 696, 696, 696, 698, 696, 698, 698, - 698, 698, 700, 698, 700, 700, 700, 700, 702, 700, 702, 702, - 702, 702, 704, 702, 704, 704, 704, 704, 688, 704, 688, 688, - 692, 693, 706, 693, 707, 706, 706, 707, 708, 707, 709, 708, - 708, 709, 710, 709, 711, 710, 710, 711, 712, 711, 713, 712, - 712, 713, 714, 713, 715, 714, 714, 715, 716, 715, 717, 716, - 716, 717, 718, 717, 93, 718, 718, 93, 719, 93, 109, 719, - 719, 109, 720, 109, 103, 720, 720, 103, 721, 103, 101, 721, - 721, 101, 694, 101, 695, 694, 694, 695, 692, 695, 693, 692, - 692, 692, 706, 692, 706, 706, 706, 706, 708, 706, 708, 708, - 708, 708, 710, 708, 710, 710, 710, 710, 712, 710, 712, 712, - 712, 712, 714, 712, 714, 714, 714, 714, 716, 714, 716, 716, - 716, 716, 718, 716, 718, 718, 718, 718, 719, 718, 719, 719, - 719, 719, 720, 719, 720, 720, 720, 720, 721, 720, 721, 721, - 721, 721, 694, 721, 694, 694, 694, 694, 692, 694, 692, 692, - 722, 723, 724, 723, 725, 724, 724, 725, 726, 725, 727, 726, - 726, 727, 728, 727, 729, 728, 728, 729, 730, 729, 731, 730, - 730, 731, 732, 731, 733, 732, 732, 733, 734, 733, 735, 734, - 734, 735, 736, 735, 737, 736, 736, 737, 738, 737, 739, 738, - 738, 739, 740, 739, 741, 740, 740, 741, 742, 741, 743, 742, - 742, 743, 744, 743, 745, 744, 744, 745, 746, 745, 747, 746, - 746, 747, 748, 747, 749, 748, 748, 749, 750, 749, 751, 750, - 750, 751, 752, 751, 753, 752, 752, 753, 754, 753, 755, 754, - 754, 755, 756, 755, 757, 756, 756, 757, 722, 757, 723, 722, - 722, 722, 724, 722, 724, 724, 724, 724, 726, 724, 726, 726, - 726, 726, 728, 726, 728, 728, 728, 728, 730, 728, 730, 730, - 730, 730, 732, 730, 732, 732, 732, 732, 734, 732, 734, 734, - 734, 734, 736, 734, 736, 736, 736, 736, 738, 736, 738, 738, - 738, 738, 740, 738, 740, 740, 740, 740, 742, 740, 742, 742, - 742, 742, 744, 742, 744, 744, 744, 744, 746, 744, 746, 746, - 746, 746, 748, 746, 748, 748, 748, 748, 750, 748, 750, 750, - 750, 750, 752, 750, 752, 752, 752, 752, 754, 752, 754, 754, - 754, 754, 756, 754, 756, 756, 756, 756, 722, 756, 722, 722, - 758, 759, 760, 759, 761, 760, 760, 761, 762, 761, 763, 762, - 762, 763, 764, 763, 765, 764, 764, 765, 766, 765, 767, 766, - 766, 767, 768, 767, 769, 768, 768, 769, 770, 769, 771, 770, - 770, 771, 772, 771, 773, 772, 772, 773, 774, 773, 775, 774, - 774, 775, 758, 775, 759, 758, 758, 758, 760, 758, 760, 760, - 760, 760, 762, 760, 762, 762, 762, 762, 764, 762, 764, 764, - 764, 764, 766, 764, 766, 766, 766, 766, 768, 766, 768, 768, - 768, 768, 770, 768, 770, 770, 770, 770, 772, 770, 772, 772, - 772, 772, 774, 772, 774, 774, 774, 774, 758, 774, 758, 758, - 776, 777, 770, 777, 771, 770, 770, 771, 768, 771, 769, 768, - 768, 769, 778, 769, 779, 778, 778, 779, 780, 779, 781, 780, - 780, 781, 782, 781, 783, 782, 782, 783, 784, 783, 785, 784, - 784, 785, 776, 785, 777, 776, 776, 776, 770, 776, 770, 770, - 770, 770, 768, 770, 768, 768, 768, 768, 778, 768, 778, 778, - 778, 778, 780, 778, 780, 780, 780, 780, 782, 780, 782, 782, - 782, 782, 784, 782, 784, 784, 784, 784, 776, 784, 776, 776, - 776, 777, 784, 777, 785, 784, 784, 785, 782, 785, 783, 782, - 782, 783, 780, 783, 781, 780, 780, 781, 786, 781, 787, 786, - 786, 787, 788, 787, 789, 788, 788, 789, 790, 789, 791, 790, - 790, 791, 792, 791, 793, 792, 792, 793, 794, 793, 795, 794, - 794, 795, 796, 795, 797, 796, 796, 797, 776, 797, 777, 776, - 776, 776, 784, 776, 784, 784, 784, 784, 782, 784, 782, 782, - 782, 782, 780, 782, 780, 780, 780, 780, 786, 780, 786, 786, - 786, 786, 788, 786, 788, 788, 788, 788, 790, 788, 790, 790, - 790, 790, 792, 790, 792, 792, 792, 792, 794, 792, 794, 794, - 794, 794, 796, 794, 796, 796, 796, 796, 776, 796, 776, 776, - 792, 793, 790, 793, 791, 790, 790, 791, 788, 791, 789, 788, - 788, 789, 786, 789, 787, 786, 786, 787, 780, 787, 781, 780, - 780, 781, 778, 781, 779, 778, 778, 779, 768, 779, 769, 768, - 768, 769, 766, 769, 767, 766, 766, 767, 764, 767, 765, 764, - 764, 765, 762, 765, 763, 762, 762, 763, 760, 763, 761, 760, - 760, 761, 758, 761, 759, 758, 758, 759, 798, 759, 799, 798, - 798, 799, 800, 799, 801, 800, 800, 801, 802, 801, 803, 802, - 802, 803, 804, 803, 805, 804, 804, 805, 806, 805, 807, 806, - 806, 807, 808, 807, 809, 808, 808, 809, 810, 809, 811, 810, - 810, 811, 812, 811, 813, 812, 812, 813, 814, 813, 815, 814, - 814, 815, 816, 815, 817, 816, 816, 817, 818, 817, 819, 818, - 818, 819, 820, 819, 821, 820, 820, 821, 822, 821, 823, 822, - 822, 823, 824, 823, 825, 824, 824, 825, 826, 825, 827, 826, - 826, 827, 828, 827, 829, 828, 828, 829, 830, 829, 831, 830, - 830, 831, 832, 831, 833, 832, 832, 833, 834, 833, 835, 834, - 834, 835, 836, 835, 837, 836, 836, 837, 838, 837, 839, 838, - 838, 839, 840, 839, 841, 840, 840, 841, 842, 841, 843, 842, - 842, 843, 844, 843, 845, 844, 844, 845, 846, 845, 847, 846, - 846, 847, 848, 847, 849, 848, 848, 849, 728, 849, 729, 728, - 728, 729, 726, 729, 727, 726, 726, 727, 724, 727, 725, 724, - 724, 725, 722, 725, 723, 722, 722, 723, 850, 723, 851, 850, - 850, 851, 792, 851, 793, 792, 792, 792, 790, 792, 790, 790, - 790, 790, 788, 790, 788, 788, 788, 788, 786, 788, 786, 786, - 786, 786, 780, 786, 780, 780, 780, 780, 778, 780, 778, 778, - 778, 778, 768, 778, 768, 768, 768, 768, 766, 768, 766, 766, - 766, 766, 764, 766, 764, 764, 764, 764, 762, 764, 762, 762, - 762, 762, 760, 762, 760, 760, 760, 760, 758, 760, 758, 758, - 758, 758, 798, 758, 798, 798, 798, 798, 800, 798, 800, 800, - 800, 800, 802, 800, 802, 802, 802, 802, 804, 802, 804, 804, - 804, 804, 806, 804, 806, 806, 806, 806, 808, 806, 808, 808, - 808, 808, 810, 808, 810, 810, 810, 810, 812, 810, 812, 812, - 812, 812, 814, 812, 814, 814, 814, 814, 816, 814, 816, 816, - 816, 816, 818, 816, 818, 818, 818, 818, 820, 818, 820, 820, - 820, 820, 822, 820, 822, 822, 822, 822, 824, 822, 824, 824, - 824, 824, 826, 824, 826, 826, 826, 826, 828, 826, 828, 828, - 828, 828, 830, 828, 830, 830, 830, 830, 832, 830, 832, 832, - 832, 832, 834, 832, 834, 834, 834, 834, 836, 834, 836, 836, - 836, 836, 838, 836, 838, 838, 838, 838, 840, 838, 840, 840, - 840, 840, 842, 840, 842, 842, 842, 842, 844, 842, 844, 844, - 844, 844, 846, 844, 846, 846, 846, 846, 848, 846, 848, 848, - 848, 848, 728, 848, 728, 728, 728, 728, 726, 728, 726, 726, - 726, 726, 724, 726, 724, 724, 724, 724, 722, 724, 722, 722, - 722, 722, 850, 722, 850, 850, 850, 850, 792, 850, 792, 792, - 852, 853, 854, 853, 855, 854, 854, 855, 856, 855, 857, 856, - 856, 857, 858, 857, 859, 858, 858, 859, 860, 859, 861, 860, - 860, 861, 862, 861, 863, 862, 862, 863, 864, 863, 865, 864, - 864, 865, 866, 865, 867, 866, 866, 867, 868, 867, 869, 868, - 868, 869, 870, 869, 871, 870, 870, 871, 852, 871, 853, 852, - 852, 852, 854, 852, 854, 854, 854, 854, 856, 854, 856, 856, - 856, 856, 858, 856, 858, 858, 858, 858, 860, 858, 860, 860, - 860, 860, 862, 860, 862, 862, 862, 862, 864, 862, 864, 864, - 864, 864, 866, 864, 866, 866, 866, 866, 868, 866, 868, 868, - 868, 868, 870, 868, 870, 870, 870, 870, 852, 870, 852, 852, - 864, 865, 862, 865, 863, 862, 862, 863, 872, 863, 873, 872, - 872, 873, 874, 873, 875, 874, 874, 875, 876, 875, 877, 876, - 876, 877, 878, 877, 879, 878, 878, 879, 880, 879, 881, 880, - 880, 881, 882, 881, 883, 882, 882, 883, 884, 883, 885, 884, - 884, 885, 886, 885, 887, 886, 886, 887, 888, 887, 889, 888, - 888, 889, 864, 889, 865, 864, 864, 864, 862, 864, 862, 862, - 862, 862, 872, 862, 872, 872, 872, 872, 874, 872, 874, 874, - 874, 874, 876, 874, 876, 876, 876, 876, 878, 876, 878, 878, - 878, 878, 880, 878, 880, 880, 880, 880, 882, 880, 882, 882, - 882, 882, 884, 882, 884, 884, 884, 884, 886, 884, 886, 886, - 886, 886, 888, 886, 888, 888, 888, 888, 864, 888, 864, 864, - 890, 891, 892, 891, 893, 892, 892, 893, 894, 893, 895, 894, - 894, 895, 896, 895, 897, 896, 896, 897, 898, 897, 899, 898, - 898, 899, 890, 899, 891, 890, 890, 890, 892, 890, 892, 892, - 892, 892, 894, 892, 894, 894, 894, 894, 896, 894, 896, 896, - 896, 896, 898, 896, 898, 898, 898, 898, 890, 898, 890, 890, - 900, 901, 902, 901, 903, 902, 902, 903, 904, 903, 905, 904, - 904, 905, 906, 905, 907, 906, 906, 907, 900, 907, 901, 900, - 900, 900, 902, 900, 902, 902, 902, 902, 904, 902, 904, 904, - 904, 904, 906, 904, 906, 906, 906, 906, 900, 906, 900, 900, - 908, 909, 910, 909, 911, 910, 910, 911, 912, 911, 163, 912, - 912, 163, 913, 163, 161, 913, 913, 161, 908, 161, 909, 908, - 908, 908, 910, 908, 910, 910, 910, 910, 912, 910, 912, 912, - 912, 912, 913, 912, 913, 913, 913, 913, 908, 913, 908, 908, - 914, 394, 915, 394, 889, 915, 915, 889, 916, 889, 887, 916, - 916, 887, 917, 887, 396, 917, 917, 396, 914, 396, 394, 914, - 914, 914, 915, 914, 915, 915, 915, 915, 916, 915, 916, 916, - 916, 916, 917, 916, 917, 917, 917, 917, 914, 917, 914, 914, - 918, 919, 920, 919, 921, 920, 920, 921, 900, 921, 901, 900, - 900, 901, 906, 901, 907, 906, 906, 907, 918, 907, 919, 918, - 918, 918, 920, 918, 920, 920, 920, 920, 900, 920, 900, 900, - 900, 900, 906, 900, 906, 906, 906, 906, 918, 906, 918, 918, - 910, 911, 908, 911, 909, 908, 908, 909, 922, 909, 923, 922, - 922, 923, 924, 923, 925, 924, 924, 925, 926, 925, 927, 926, - 926, 927, 910, 927, 911, 910, 910, 910, 908, 910, 908, 908, - 908, 908, 922, 908, 922, 922, 922, 922, 924, 922, 924, 924, - 924, 924, 926, 924, 926, 926, 926, 926, 910, 926, 910, 910, - 928, 929, 930, 929, 931, 930, 930, 931, 932, 931, 933, 932, - 932, 933, 934, 933, 935, 934, 934, 935, 904, 935, 905, 904, - 904, 905, 902, 905, 903, 902, 902, 903, 860, 903, 861, 860, - 860, 861, 858, 861, 859, 858, 858, 859, 936, 859, 937, 936, - 936, 937, 928, 937, 929, 928, 928, 928, 930, 928, 930, 930, - 930, 930, 932, 930, 932, 932, 932, 932, 934, 932, 934, 934, - 934, 934, 904, 934, 904, 904, 904, 904, 902, 904, 902, 902, - 902, 902, 860, 902, 860, 860, 860, 860, 858, 860, 858, 858, - 858, 858, 936, 858, 936, 936, 936, 936, 928, 936, 928, 928, - 918, 919, 938, 919, 939, 938, 938, 939, 940, 939, 941, 940, - 940, 941, 942, 941, 943, 942, 942, 943, 944, 943, 945, 944, - 944, 945, 946, 945, 947, 946, 946, 947, 948, 947, 949, 948, - 948, 949, 950, 949, 951, 950, 950, 951, 952, 951, 953, 952, - 952, 953, 954, 953, 955, 954, 954, 955, 956, 955, 957, 956, - 956, 957, 958, 957, 959, 958, 958, 959, 960, 959, 961, 960, - 960, 961, 962, 961, 963, 962, 962, 963, 964, 963, 965, 964, - 964, 965, 966, 965, 967, 966, 966, 967, 920, 967, 921, 920, - 920, 921, 918, 921, 919, 918, 918, 918, 938, 918, 938, 938, - 938, 938, 940, 938, 940, 940, 940, 940, 942, 940, 942, 942, - 942, 942, 944, 942, 944, 944, 944, 944, 946, 944, 946, 946, - 946, 946, 948, 946, 948, 948, 948, 948, 950, 948, 950, 950, - 950, 950, 952, 950, 952, 952, 952, 952, 954, 952, 954, 954, - 954, 954, 956, 954, 956, 956, 956, 956, 958, 956, 958, 958, - 958, 958, 960, 958, 960, 960, 960, 960, 962, 960, 962, 962, - 962, 962, 964, 962, 964, 964, 964, 964, 966, 964, 966, 966, - 966, 966, 920, 966, 920, 920, 920, 920, 918, 920, 918, 918, - 968, 969, 928, 969, 929, 928, 928, 929, 936, 929, 937, 936, - 936, 937, 970, 937, 971, 970, 970, 971, 972, 971, 973, 972, - 972, 973, 974, 973, 975, 974, 974, 975, 968, 975, 969, 968, - 968, 968, 928, 968, 928, 928, 928, 928, 936, 928, 936, 936, - 936, 936, 970, 936, 970, 970, 970, 970, 972, 970, 972, 972, - 972, 972, 974, 972, 974, 974, 974, 974, 968, 974, 968, 968, - 974, 975, 972, 975, 973, 972, 972, 973, 970, 973, 971, 970, - 970, 971, 852, 971, 853, 852, 852, 853, 870, 853, 871, 870, - 870, 871, 868, 871, 869, 868, 868, 869, 866, 869, 867, 866, - 866, 867, 976, 867, 977, 976, 976, 977, 978, 977, 979, 978, - 978, 979, 391, 979, 392, 391, 391, 392, 389, 392, 390, 389, - 389, 390, 974, 390, 975, 974, 974, 974, 972, 974, 972, 972, - 972, 972, 970, 972, 970, 970, 970, 970, 852, 970, 852, 852, - 852, 852, 870, 852, 870, 870, 870, 870, 868, 870, 868, 868, - 868, 868, 866, 868, 866, 866, 866, 866, 976, 866, 976, 976, - 976, 976, 978, 976, 978, 978, 978, 978, 391, 978, 391, 391, - 391, 391, 389, 391, 389, 389, 389, 389, 974, 389, 974, 974, - 399, 400, 397, 400, 398, 397, 397, 398, 980, 398, 981, 980, - 980, 981, 982, 981, 983, 982, 982, 983, 984, 983, 891, 984, - 984, 891, 985, 891, 899, 985, 985, 899, 986, 899, 987, 986, - 986, 987, 988, 987, 989, 988, 988, 989, 399, 989, 400, 399, - 399, 399, 397, 399, 397, 397, 397, 397, 980, 397, 980, 980, - 980, 980, 982, 980, 982, 982, 982, 982, 984, 982, 984, 984, - 984, 984, 985, 984, 985, 985, 985, 985, 986, 985, 986, 986, - 986, 986, 988, 986, 988, 988, 988, 988, 399, 988, 399, 399, - 990, 330, 991, 330, 992, 991, 991, 992, 993, 992, 994, 993, - 993, 994, 995, 994, 996, 995, 995, 996, 997, 996, 998, 997, - 997, 998, 999, 998, 332, 999, 999, 332, 990, 332, 330, 990, - 990, 990, 991, 990, 991, 991, 991, 991, 993, 991, 993, 993, - 993, 993, 995, 993, 995, 995, 995, 995, 997, 995, 997, 997, - 997, 997, 999, 997, 999, 999, 999, 999, 990, 999, 990, 990, - 997, 998, 995, 998, 996, 995, 995, 996, 1000, 996, 1001, 1000, - 1000, 1001, 930, 1001, 931, 930, 930, 931, 928, 931, 929, 928, - 928, 929, 968, 929, 969, 968, 968, 969, 997, 969, 998, 997, - 997, 997, 995, 997, 995, 995, 995, 995, 1000, 995, 1000, 1000, - 1000, 1000, 930, 1000, 930, 930, 930, 930, 928, 930, 928, 928, - 928, 928, 968, 928, 968, 968, 968, 968, 997, 968, 997, 997, - 1002, 1003, 1004, 1003, 1005, 1004, 1004, 1005, 1006, 1005, 1007, 1006, - 1006, 1007, 1008, 1007, 1009, 1008, 1008, 1009, 1010, 1009, 1011, 1010, - 1010, 1011, 1012, 1011, 1013, 1012, 1012, 1013, 1014, 1013, 1015, 1014, - 1014, 1015, 1016, 1015, 1017, 1016, 1016, 1017, 1018, 1017, 1019, 1018, - 1018, 1019, 1020, 1019, 1021, 1020, 1020, 1021, 1022, 1021, 1023, 1022, - 1022, 1023, 1024, 1023, 1025, 1024, 1024, 1025, 1026, 1025, 1027, 1026, - 1026, 1027, 1028, 1027, 1029, 1028, 1028, 1029, 1030, 1029, 1031, 1030, - 1030, 1031, 1002, 1031, 1003, 1002, 1002, 1002, 1004, 1002, 1004, 1004, - 1004, 1004, 1006, 1004, 1006, 1006, 1006, 1006, 1008, 1006, 1008, 1008, - 1008, 1008, 1010, 1008, 1010, 1010, 1010, 1010, 1012, 1010, 1012, 1012, - 1012, 1012, 1014, 1012, 1014, 1014, 1014, 1014, 1016, 1014, 1016, 1016, - 1016, 1016, 1018, 1016, 1018, 1018, 1018, 1018, 1020, 1018, 1020, 1020, - 1020, 1020, 1022, 1020, 1022, 1022, 1022, 1022, 1024, 1022, 1024, 1024, - 1024, 1024, 1026, 1024, 1026, 1026, 1026, 1026, 1028, 1026, 1028, 1028, - 1028, 1028, 1030, 1028, 1030, 1030, 1030, 1030, 1002, 1030, 1002, 1002, - 1032, 1033, 1034, 1033, 1035, 1034, 1034, 1035, 1036, 1035, 612, 1036, - 1036, 612, 1037, 612, 610, 1037, 1037, 610, 1032, 610, 1033, 1032, - 1032, 1032, 1034, 1032, 1034, 1034, 1034, 1034, 1036, 1034, 1036, 1036, - 1036, 1036, 1037, 1036, 1037, 1037, 1037, 1037, 1032, 1037, 1032, 1032, - 1037, 610, 1038, 610, 1039, 1038, 1038, 1039, 1040, 1039, 1041, 1040, - 1040, 1041, 1032, 1041, 1033, 1032, 1032, 1033, 1037, 1033, 610, 1037, - 1037, 1037, 1038, 1037, 1038, 1038, 1038, 1038, 1040, 1038, 1040, 1040, - 1040, 1040, 1032, 1040, 1032, 1032, 1032, 1032, 1037, 1032, 1037, 1037, - 609, 610, 607, 610, 608, 607, 607, 608, 1042, 608, 1043, 1042, - 1042, 1043, 1044, 1043, 1045, 1044, 1044, 1045, 1046, 1045, 1047, 1046, - 1046, 1047, 1048, 1047, 1039, 1048, 1048, 1039, 609, 1039, 610, 609, - 609, 609, 607, 609, 607, 607, 607, 607, 1042, 607, 1042, 1042, - 1042, 1042, 1044, 1042, 1044, 1044, 1044, 1044, 1046, 1044, 1046, 1046, - 1046, 1046, 1048, 1046, 1048, 1048, 1048, 1048, 609, 1048, 609, 609, - 1049, 1050, 1051, 1050, 1052, 1051, 1051, 1052, 1053, 1052, 1054, 1053, - 1053, 1054, 1055, 1054, 1056, 1055, 1055, 1056, 1057, 1056, 1058, 1057, - 1057, 1058, 1059, 1058, 1060, 1059, 1059, 1060, 1049, 1060, 1050, 1049, - 1049, 1049, 1051, 1049, 1051, 1051, 1051, 1051, 1053, 1051, 1053, 1053, - 1053, 1053, 1055, 1053, 1055, 1055, 1055, 1055, 1057, 1055, 1057, 1057, - 1057, 1057, 1059, 1057, 1059, 1059, 1059, 1059, 1049, 1059, 1049, 1049, - 1049, 1050, 1059, 1050, 1060, 1059, 1059, 1060, 1057, 1060, 1058, 1057, - 1057, 1058, 1008, 1058, 1009, 1008, 1008, 1009, 1006, 1009, 1007, 1006, - 1006, 1007, 1004, 1007, 1005, 1004, 1004, 1005, 1002, 1005, 1003, 1002, - 1002, 1003, 1061, 1003, 1062, 1061, 1061, 1062, 1049, 1062, 1050, 1049, - 1049, 1049, 1059, 1049, 1059, 1059, 1059, 1059, 1057, 1059, 1057, 1057, - 1057, 1057, 1008, 1057, 1008, 1008, 1008, 1008, 1006, 1008, 1006, 1006, - 1006, 1006, 1004, 1006, 1004, 1004, 1004, 1004, 1002, 1004, 1002, 1002, - 1002, 1002, 1061, 1002, 1061, 1061, 1061, 1061, 1049, 1061, 1049, 1049, - 1063, 1064, 1065, 1064, 1066, 1065, 1065, 1066, 1067, 1066, 1068, 1067, - 1067, 1068, 1069, 1068, 1070, 1069, 1069, 1070, 1071, 1070, 1072, 1071, - 1071, 1072, 1073, 1072, 1074, 1073, 1073, 1074, 1075, 1074, 1076, 1075, - 1075, 1076, 1077, 1076, 1078, 1077, 1077, 1078, 1079, 1078, 1080, 1079, - 1079, 1080, 1081, 1080, 1082, 1081, 1081, 1082, 1083, 1082, 1084, 1083, - 1083, 1084, 1063, 1084, 1064, 1063, 1063, 1063, 1065, 1063, 1065, 1065, - 1065, 1065, 1067, 1065, 1067, 1067, 1067, 1067, 1069, 1067, 1069, 1069, - 1069, 1069, 1071, 1069, 1071, 1071, 1071, 1071, 1073, 1071, 1073, 1073, - 1073, 1073, 1075, 1073, 1075, 1075, 1075, 1075, 1077, 1075, 1077, 1077, - 1077, 1077, 1079, 1077, 1079, 1079, 1079, 1079, 1081, 1079, 1081, 1081, - 1081, 1081, 1083, 1081, 1083, 1083, 1083, 1083, 1063, 1083, 1063, 1063, - 1085, 1086, 1087, 1086, 1088, 1087, 1087, 1088, 1083, 1088, 1084, 1083, - 1083, 1084, 1081, 1084, 1082, 1081, 1081, 1082, 1089, 1082, 1090, 1089, - 1089, 1090, 1085, 1090, 1086, 1085, 1085, 1085, 1087, 1085, 1087, 1087, - 1087, 1087, 1083, 1087, 1083, 1083, 1083, 1083, 1081, 1083, 1081, 1081, - 1081, 1081, 1089, 1081, 1089, 1089, 1089, 1089, 1085, 1089, 1085, 1085, - 1044, 1045, 1042, 1045, 1043, 1042, 1042, 1043, 1091, 1043, 1092, 1091, - 1091, 1092, 1093, 1092, 1094, 1093, 1093, 1094, 1095, 1094, 1096, 1095, - 1095, 1096, 1097, 1096, 1098, 1097, 1097, 1098, 1099, 1098, 1100, 1099, - 1099, 1100, 1101, 1100, 1102, 1101, 1101, 1102, 1103, 1102, 1104, 1103, - 1103, 1104, 1087, 1104, 1088, 1087, 1087, 1088, 1085, 1088, 1086, 1085, - 1085, 1086, 1105, 1086, 1106, 1105, 1105, 1106, 1107, 1106, 1108, 1107, - 1107, 1108, 1109, 1108, 1110, 1109, 1109, 1110, 1044, 1110, 1045, 1044, - 1044, 1044, 1042, 1044, 1042, 1042, 1042, 1042, 1091, 1042, 1091, 1091, - 1091, 1091, 1093, 1091, 1093, 1093, 1093, 1093, 1095, 1093, 1095, 1095, - 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1099, 1097, 1099, 1099, - 1099, 1099, 1101, 1099, 1101, 1101, 1101, 1101, 1103, 1101, 1103, 1103, - 1103, 1103, 1087, 1103, 1087, 1087, 1087, 1087, 1085, 1087, 1085, 1085, - 1085, 1085, 1105, 1085, 1105, 1105, 1105, 1105, 1107, 1105, 1107, 1107, - 1107, 1107, 1109, 1107, 1109, 1109, 1109, 1109, 1044, 1109, 1044, 1044, - 1065, 1066, 1063, 1066, 1064, 1063, 1063, 1064, 1111, 1064, 1112, 1111, - 1111, 1112, 1113, 1112, 1114, 1113, 1113, 1114, 1115, 1114, 1116, 1115, - 1115, 1116, 1117, 1116, 1118, 1117, 1117, 1118, 1119, 1118, 1120, 1119, - 1119, 1120, 1065, 1120, 1066, 1065, 1065, 1065, 1063, 1065, 1063, 1063, - 1063, 1063, 1111, 1063, 1111, 1111, 1111, 1111, 1113, 1111, 1113, 1113, - 1113, 1113, 1115, 1113, 1115, 1115, 1115, 1115, 1117, 1115, 1117, 1117, - 1117, 1117, 1119, 1117, 1119, 1119, 1119, 1119, 1065, 1119, 1065, 1065, - 1121, 1122, 1123, 1122, 1124, 1123, 1123, 1124, 1075, 1124, 1076, 1075, - 1075, 1076, 1073, 1076, 1074, 1073, 1073, 1074, 1125, 1074, 1126, 1125, - 1125, 1126, 1127, 1126, 1128, 1127, 1127, 1128, 1129, 1128, 1130, 1129, - 1129, 1130, 1115, 1130, 1116, 1115, 1115, 1116, 1113, 1116, 1114, 1113, - 1113, 1114, 1121, 1114, 1122, 1121, 1121, 1121, 1123, 1121, 1123, 1123, - 1123, 1123, 1075, 1123, 1075, 1075, 1075, 1075, 1073, 1075, 1073, 1073, - 1073, 1073, 1125, 1073, 1125, 1125, 1125, 1125, 1127, 1125, 1127, 1127, - 1127, 1127, 1129, 1127, 1129, 1129, 1129, 1129, 1115, 1129, 1115, 1115, - 1115, 1115, 1113, 1115, 1113, 1113, 1113, 1113, 1121, 1113, 1121, 1121, - 1123, 1124, 1121, 1124, 1122, 1121, 1121, 1122, 1055, 1122, 1056, 1055, - 1055, 1056, 1053, 1056, 1054, 1053, 1053, 1054, 1123, 1054, 1124, 1123, - 1123, 1123, 1121, 1123, 1121, 1121, 1121, 1121, 1055, 1121, 1055, 1055, - 1055, 1055, 1053, 1055, 1053, 1053, 1053, 1053, 1123, 1053, 1123, 1123, - 1131, 1132, 1133, 1132, 1134, 1133, 1133, 1134, 1135, 1134, 1136, 1135, - 1135, 1136, 1137, 1136, 1138, 1137, 1137, 1138, 1139, 1138, 1140, 1139, - 1139, 1140, 1141, 1140, 1142, 1141, 1141, 1142, 1131, 1142, 1132, 1131, - 1131, 1131, 1133, 1131, 1133, 1133, 1133, 1133, 1135, 1133, 1135, 1135, - 1135, 1135, 1137, 1135, 1137, 1137, 1137, 1137, 1139, 1137, 1139, 1139, - 1139, 1139, 1141, 1139, 1141, 1141, 1141, 1141, 1131, 1141, 1131, 1131, - 1143, 1144, 1141, 1144, 1142, 1141, 1141, 1142, 1139, 1142, 1140, 1139, - 1139, 1140, 1145, 1140, 1146, 1145, 1145, 1146, 1147, 1146, 1148, 1147, - 1147, 1148, 1149, 1148, 1150, 1149, 1149, 1150, 1151, 1150, 1152, 1151, - 1151, 1152, 1153, 1152, 1154, 1153, 1153, 1154, 1155, 1154, 1156, 1155, - 1155, 1156, 1143, 1156, 1144, 1143, 1143, 1143, 1141, 1143, 1141, 1141, - 1141, 1141, 1139, 1141, 1139, 1139, 1139, 1139, 1145, 1139, 1145, 1145, - 1145, 1145, 1147, 1145, 1147, 1147, 1147, 1147, 1149, 1147, 1149, 1149, - 1149, 1149, 1151, 1149, 1151, 1151, 1151, 1151, 1153, 1151, 1153, 1153, - 1153, 1153, 1155, 1153, 1155, 1155, 1155, 1155, 1143, 1155, 1143, 1143, - 409, 410, 407, 410, 408, 407, 407, 408, 1157, 408, 1158, 1157, - 1157, 1158, 1159, 1158, 1160, 1159, 1159, 1160, 1135, 1160, 1136, 1135, - 1135, 1136, 1133, 1136, 1134, 1133, 1133, 1134, 1161, 1134, 1162, 1161, - 1161, 1162, 409, 1162, 410, 409, 409, 409, 407, 409, 407, 407, - 407, 407, 1157, 407, 1157, 1157, 1157, 1157, 1159, 1157, 1159, 1159, - 1159, 1159, 1135, 1159, 1135, 1135, 1135, 1135, 1133, 1135, 1133, 1133, - 1133, 1133, 1161, 1133, 1161, 1161, 1161, 1161, 409, 1161, 409, 409, - 1163, 1164, 1165, 1164, 1166, 1165, 1165, 1166, 1167, 1166, 1168, 1167, - 1167, 1168, 1169, 1168, 1170, 1169, 1169, 1170, 1171, 1170, 1172, 1171, - 1171, 1172, 1173, 1172, 1174, 1173, 1173, 1174, 1175, 1174, 1176, 1175, - 1175, 1176, 1177, 1176, 1178, 1177, 1177, 1178, 1179, 1178, 1180, 1179, - 1179, 1180, 1181, 1180, 1182, 1181, 1181, 1182, 1183, 1182, 1184, 1183, - 1183, 1184, 1185, 1184, 1186, 1185, 1185, 1186, 1187, 1186, 1188, 1187, - 1187, 1188, 1189, 1188, 1190, 1189, 1189, 1190, 1191, 1190, 1192, 1191, - 1191, 1192, 1193, 1192, 1194, 1193, 1193, 1194, 1195, 1194, 1196, 1195, - 1195, 1196, 1197, 1196, 1198, 1197, 1197, 1198, 1199, 1198, 1200, 1199, - 1199, 1200, 1201, 1200, 1202, 1201, 1201, 1202, 1203, 1202, 1204, 1203, - 1203, 1204, 1205, 1204, 1206, 1205, 1205, 1206, 1207, 1206, 1208, 1207, - 1207, 1208, 1209, 1208, 1210, 1209, 1209, 1210, 1211, 1210, 1212, 1211, - 1211, 1212, 1213, 1212, 1214, 1213, 1213, 1214, 1215, 1214, 1216, 1215, - 1215, 1216, 1217, 1216, 1218, 1217, 1217, 1218, 1219, 1218, 1220, 1219, - 1219, 1220, 1221, 1220, 1222, 1221, 1221, 1222, 1223, 1222, 1224, 1223, - 1223, 1224, 1225, 1224, 1226, 1225, 1225, 1226, 1227, 1226, 1228, 1227, - 1227, 1228, 1229, 1228, 1230, 1229, 1229, 1230, 1231, 1230, 1232, 1231, - 1231, 1232, 1233, 1232, 1234, 1233, 1233, 1234, 1235, 1234, 1236, 1235, - 1235, 1236, 1237, 1236, 1238, 1237, 1237, 1238, 1239, 1238, 1240, 1239, - 1239, 1240, 1241, 1240, 1242, 1241, 1241, 1242, 1243, 1242, 1244, 1243, - 1243, 1244, 1245, 1244, 1246, 1245, 1245, 1246, 1247, 1246, 1248, 1247, - 1247, 1248, 1249, 1248, 1250, 1249, 1249, 1250, 1251, 1250, 1252, 1251, - 1251, 1252, 1253, 1252, 1254, 1253, 1253, 1254, 1255, 1254, 1256, 1255, - 1255, 1256, 1257, 1256, 1258, 1257, 1257, 1258, 1259, 1258, 1260, 1259, - 1259, 1260, 1261, 1260, 1262, 1261, 1261, 1262, 1263, 1262, 1264, 1263, - 1263, 1264, 1265, 1264, 1266, 1265, 1265, 1266, 1267, 1266, 1268, 1267, - 1267, 1268, 1269, 1268, 1270, 1269, 1269, 1270, 1271, 1270, 1272, 1271, - 1271, 1272, 1273, 1272, 1274, 1273, 1273, 1274, 1275, 1274, 1276, 1275, - 1275, 1276, 1277, 1276, 1278, 1277, 1277, 1278, 1279, 1278, 1280, 1279, - 1279, 1280, 1281, 1280, 1282, 1281, 1281, 1282, 1283, 1282, 1284, 1283, - 1283, 1284, 1285, 1284, 1286, 1285, 1285, 1286, 1287, 1286, 1288, 1287, - 1287, 1288, 1289, 1288, 1290, 1289, 1289, 1290, 1291, 1290, 1292, 1291, - 1291, 1292, 1293, 1292, 1294, 1293, 1293, 1294, 1295, 1294, 1296, 1295, - 1295, 1296, 1163, 1296, 1164, 1163, 1163, 1163, 1165, 1163, 1165, 1165, - 1165, 1165, 1167, 1165, 1167, 1167, 1167, 1167, 1169, 1167, 1169, 1169, - 1169, 1169, 1171, 1169, 1171, 1171, 1171, 1171, 1173, 1171, 1173, 1173, - 1173, 1173, 1175, 1173, 1175, 1175, 1175, 1175, 1177, 1175, 1177, 1177, - 1177, 1177, 1179, 1177, 1179, 1179, 1179, 1179, 1181, 1179, 1181, 1181, - 1181, 1181, 1183, 1181, 1183, 1183, 1183, 1183, 1185, 1183, 1185, 1185, - 1185, 1185, 1187, 1185, 1187, 1187, 1187, 1187, 1189, 1187, 1189, 1189, - 1189, 1189, 1191, 1189, 1191, 1191, 1191, 1191, 1193, 1191, 1193, 1193, - 1193, 1193, 1195, 1193, 1195, 1195, 1195, 1195, 1197, 1195, 1197, 1197, - 1197, 1197, 1199, 1197, 1199, 1199, 1199, 1199, 1201, 1199, 1201, 1201, - 1201, 1201, 1203, 1201, 1203, 1203, 1203, 1203, 1205, 1203, 1205, 1205, - 1205, 1205, 1207, 1205, 1207, 1207, 1207, 1207, 1209, 1207, 1209, 1209, - 1209, 1209, 1211, 1209, 1211, 1211, 1211, 1211, 1213, 1211, 1213, 1213, - 1213, 1213, 1215, 1213, 1215, 1215, 1215, 1215, 1217, 1215, 1217, 1217, - 1217, 1217, 1219, 1217, 1219, 1219, 1219, 1219, 1221, 1219, 1221, 1221, - 1221, 1221, 1223, 1221, 1223, 1223, 1223, 1223, 1225, 1223, 1225, 1225, - 1225, 1225, 1227, 1225, 1227, 1227, 1227, 1227, 1229, 1227, 1229, 1229, - 1229, 1229, 1231, 1229, 1231, 1231, 1231, 1231, 1233, 1231, 1233, 1233, - 1233, 1233, 1235, 1233, 1235, 1235, 1235, 1235, 1237, 1235, 1237, 1237, - 1237, 1237, 1239, 1237, 1239, 1239, 1239, 1239, 1241, 1239, 1241, 1241, - 1241, 1241, 1243, 1241, 1243, 1243, 1243, 1243, 1245, 1243, 1245, 1245, - 1245, 1245, 1247, 1245, 1247, 1247, 1247, 1247, 1249, 1247, 1249, 1249, - 1249, 1249, 1251, 1249, 1251, 1251, 1251, 1251, 1253, 1251, 1253, 1253, - 1253, 1253, 1255, 1253, 1255, 1255, 1255, 1255, 1257, 1255, 1257, 1257, - 1257, 1257, 1259, 1257, 1259, 1259, 1259, 1259, 1261, 1259, 1261, 1261, - 1261, 1261, 1263, 1261, 1263, 1263, 1263, 1263, 1265, 1263, 1265, 1265, - 1265, 1265, 1267, 1265, 1267, 1267, 1267, 1267, 1269, 1267, 1269, 1269, - 1269, 1269, 1271, 1269, 1271, 1271, 1271, 1271, 1273, 1271, 1273, 1273, - 1273, 1273, 1275, 1273, 1275, 1275, 1275, 1275, 1277, 1275, 1277, 1277, - 1277, 1277, 1279, 1277, 1279, 1279, 1279, 1279, 1281, 1279, 1281, 1281, - 1281, 1281, 1283, 1281, 1283, 1283, 1283, 1283, 1285, 1283, 1285, 1285, - 1285, 1285, 1287, 1285, 1287, 1287, 1287, 1287, 1289, 1287, 1289, 1289, - 1289, 1289, 1291, 1289, 1291, 1291, 1291, 1291, 1293, 1291, 1293, 1293, - 1293, 1293, 1295, 1293, 1295, 1295, 1295, 1295, 1163, 1295, 1163, 1163, - 1297, 1298, 1299, 1298, 1300, 1299, 1299, 1300, 1301, 1300, 1302, 1301, - 1301, 1302, 1303, 1302, 1304, 1303, 1303, 1304, 1305, 1304, 1306, 1305, - 1305, 1306, 1307, 1306, 1308, 1307, 1307, 1308, 1309, 1308, 1310, 1309, - 1309, 1310, 1311, 1310, 1312, 1311, 1311, 1312, 1313, 1312, 1314, 1313, - 1313, 1314, 1315, 1314, 1316, 1315, 1315, 1316, 1297, 1316, 1298, 1297, - 1297, 1297, 1299, 1297, 1299, 1299, 1299, 1299, 1301, 1299, 1301, 1301, - 1301, 1301, 1303, 1301, 1303, 1303, 1303, 1303, 1305, 1303, 1305, 1305, - 1305, 1305, 1307, 1305, 1307, 1307, 1307, 1307, 1309, 1307, 1309, 1309, - 1309, 1309, 1311, 1309, 1311, 1311, 1311, 1311, 1313, 1311, 1313, 1313, - 1313, 1313, 1315, 1313, 1315, 1315, 1315, 1315, 1297, 1315, 1297, 1297, - 1317, 1318, 1319, 1318, 1320, 1319, 1319, 1320, 1321, 1320, 1322, 1321, - 1321, 1322, 1323, 1322, 1324, 1323, 1323, 1324, 1317, 1324, 1318, 1317, - 1317, 1317, 1319, 1317, 1319, 1319, 1319, 1319, 1321, 1319, 1321, 1321, - 1321, 1321, 1323, 1321, 1323, 1323, 1323, 1323, 1317, 1323, 1317, 1317, - 1325, 1324, 1326, 1324, 1322, 1326, 1326, 1322, 1327, 1322, 1328, 1327, - 1327, 1328, 1329, 1328, 1330, 1329, 1329, 1330, 1331, 1330, 1332, 1331, - 1331, 1332, 1325, 1332, 1324, 1325, 1325, 1325, 1326, 1325, 1326, 1326, - 1326, 1326, 1327, 1326, 1327, 1327, 1327, 1327, 1329, 1327, 1329, 1329, - 1329, 1329, 1331, 1329, 1331, 1331, 1331, 1331, 1325, 1331, 1325, 1325, - 1333, 1334, 1335, 1334, 1336, 1335, 1335, 1336, 1337, 1336, 1338, 1337, - 1337, 1338, 1339, 1338, 1306, 1339, 1339, 1306, 1340, 1306, 1304, 1340, - 1340, 1304, 1341, 1304, 1342, 1341, 1341, 1342, 1333, 1342, 1334, 1333, - 1333, 1333, 1335, 1333, 1335, 1335, 1335, 1335, 1337, 1335, 1337, 1337, - 1337, 1337, 1339, 1337, 1339, 1339, 1339, 1339, 1340, 1339, 1340, 1340, - 1340, 1340, 1341, 1340, 1341, 1341, 1341, 1341, 1333, 1341, 1333, 1333, - 1331, 1332, 1329, 1332, 1330, 1329, 1329, 1330, 1327, 1330, 1328, 1327, - 1327, 1328, 1343, 1328, 1344, 1343, 1343, 1344, 1345, 1344, 1346, 1345, - 1345, 1346, 1347, 1346, 1348, 1347, 1347, 1348, 1349, 1348, 1350, 1349, - 1349, 1350, 1351, 1350, 1352, 1351, 1351, 1352, 1331, 1352, 1332, 1331, - 1331, 1331, 1329, 1331, 1329, 1329, 1329, 1329, 1327, 1329, 1327, 1327, - 1327, 1327, 1343, 1327, 1343, 1343, 1343, 1343, 1345, 1343, 1345, 1345, - 1345, 1345, 1347, 1345, 1347, 1347, 1347, 1347, 1349, 1347, 1349, 1349, - 1349, 1349, 1351, 1349, 1351, 1351, 1351, 1351, 1331, 1351, 1331, 1331, - 1531, 1532, 1533, 1532, 1534, 1533, 1533, 1534, 1535, 1534, 1536, 1535, - 1535, 1536, 1537, 1536, 1538, 1537, 1537, 1538, 1539, 1538, 1540, 1539, - 1539, 1540, 1541, 1540, 1542, 1541, 1541, 1542, 1543, 1542, 1544, 1543, - 1543, 1544, 1545, 1544, 1546, 1545, 1545, 1546, 1547, 1546, 1548, 1547, - 1547, 1548, 1549, 1548, 1550, 1549, 1549, 1550, 1531, 1550, 1532, 1531, - 1531, 1531, 1533, 1531, 1533, 1533, 1533, 1533, 1535, 1533, 1535, 1535, - 1535, 1535, 1537, 1535, 1537, 1537, 1537, 1537, 1539, 1537, 1539, 1539, - 1539, 1539, 1541, 1539, 1541, 1541, 1541, 1541, 1543, 1541, 1543, 1543, - 1543, 1543, 1545, 1543, 1545, 1545, 1545, 1545, 1547, 1545, 1547, 1547, - 1547, 1547, 1549, 1547, 1549, 1549, 1549, 1549, 1531, 1549, 1531, 1531, - 1551, 1552, 1553, 1552, 1554, 1553, 1553, 1554, 1555, 1554, 1556, 1555, - 1555, 1556, 1557, 1556, 1558, 1557, 1557, 1558, 1559, 1558, 1560, 1559, - 1559, 1560, 1551, 1560, 1552, 1551, 1551, 1551, 1553, 1551, 1553, 1553, - 1553, 1553, 1555, 1553, 1555, 1555, 1555, 1555, 1557, 1555, 1557, 1557, - 1557, 1557, 1559, 1557, 1559, 1559, 1559, 1559, 1551, 1559, 1551, 1551, - 1561, 1540, 1562, 1540, 1563, 1562, 1562, 1563, 1564, 1563, 1565, 1564, - 1564, 1565, 1566, 1565, 1567, 1566, 1566, 1567, 1568, 1567, 1569, 1568, - 1568, 1569, 1570, 1569, 1571, 1570, 1570, 1571, 1572, 1571, 1542, 1572, - 1572, 1542, 1561, 1542, 1540, 1561, 1561, 1561, 1562, 1561, 1562, 1562, - 1562, 1562, 1564, 1562, 1564, 1564, 1564, 1564, 1566, 1564, 1566, 1566, - 1566, 1566, 1568, 1566, 1568, 1568, 1568, 1568, 1570, 1568, 1570, 1570, - 1570, 1570, 1572, 1570, 1572, 1572, 1572, 1572, 1561, 1572, 1561, 1561, - 1553, 1554, 1551, 1554, 1552, 1551, 1551, 1552, 1573, 1552, 1574, 1573, - 1573, 1574, 1575, 1574, 1576, 1575, 1575, 1576, 1577, 1576, 1578, 1577, - 1577, 1578, 1568, 1578, 1569, 1568, 1568, 1569, 1566, 1569, 1567, 1566, - 1566, 1567, 1579, 1567, 1580, 1579, 1579, 1580, 1581, 1580, 1582, 1581, - 1581, 1582, 1553, 1582, 1554, 1553, 1553, 1553, 1551, 1553, 1551, 1551, - 1551, 1551, 1573, 1551, 1573, 1573, 1573, 1573, 1575, 1573, 1575, 1575, - 1575, 1575, 1577, 1575, 1577, 1577, 1577, 1577, 1568, 1577, 1568, 1568, - 1568, 1568, 1566, 1568, 1566, 1566, 1566, 1566, 1579, 1566, 1579, 1579, - 1579, 1579, 1581, 1579, 1581, 1581, 1581, 1581, 1553, 1581, 1553, 1553, - 1583, 1584, 1585, 1584, 1586, 1585, 1585, 1586, 1587, 1586, 1588, 1587, - 1587, 1588, 1589, 1588, 1590, 1589, 1589, 1590, 1591, 1590, 1592, 1591, - 1591, 1592, 1593, 1592, 1594, 1593, 1593, 1594, 1595, 1594, 1596, 1595, - 1595, 1596, 1597, 1596, 1598, 1597, 1597, 1598, 1583, 1598, 1584, 1583, - 1583, 1583, 1585, 1583, 1585, 1585, 1585, 1585, 1587, 1585, 1587, 1587, - 1587, 1587, 1589, 1587, 1589, 1589, 1589, 1589, 1591, 1589, 1591, 1591, - 1591, 1591, 1593, 1591, 1593, 1593, 1593, 1593, 1595, 1593, 1595, 1595, - 1595, 1595, 1597, 1595, 1597, 1597, 1597, 1597, 1583, 1597, 1583, 1583, - 1559, 1560, 1583, 1560, 1584, 1583, 1583, 1584, 1597, 1584, 1598, 1597, - 1597, 1598, 1595, 1598, 1596, 1595, 1595, 1596, 1593, 1596, 1594, 1593, - 1593, 1594, 1599, 1594, 1600, 1599, 1599, 1600, 1575, 1600, 1576, 1575, - 1575, 1576, 1573, 1576, 1574, 1573, 1573, 1574, 1551, 1574, 1552, 1551, - 1551, 1552, 1559, 1552, 1560, 1559, 1559, 1559, 1583, 1559, 1583, 1583, - 1583, 1583, 1597, 1583, 1597, 1597, 1597, 1597, 1595, 1597, 1595, 1595, - 1595, 1595, 1593, 1595, 1593, 1593, 1593, 1593, 1599, 1593, 1599, 1599, - 1599, 1599, 1575, 1599, 1575, 1575, 1575, 1575, 1573, 1575, 1573, 1573, - 1573, 1573, 1551, 1573, 1551, 1551, 1551, 1551, 1559, 1551, 1559, 1559, - 1601, 1602, 1603, 1602, 1604, 1603, 1603, 1604, 1605, 1604, 1606, 1605, - 1605, 1606, 1607, 1606, 1608, 1607, 1607, 1608, 1609, 1608, 1610, 1609, - 1609, 1610, 1611, 1610, 1538, 1611, 1611, 1538, 1612, 1538, 1536, 1612, - 1612, 1536, 1613, 1536, 1534, 1613, 1613, 1534, 1614, 1534, 1615, 1614, - 1614, 1615, 1616, 1615, 1617, 1616, 1616, 1617, 1618, 1617, 1619, 1618, - 1618, 1619, 1620, 1619, 1621, 1620, 1620, 1621, 1622, 1621, 1623, 1622, - 1622, 1623, 1624, 1623, 1625, 1624, 1624, 1625, 1626, 1625, 1627, 1626, - 1626, 1627, 1628, 1627, 1629, 1628, 1628, 1629, 1601, 1629, 1602, 1601, - 1601, 1601, 1603, 1601, 1603, 1603, 1603, 1603, 1605, 1603, 1605, 1605, - 1605, 1605, 1607, 1605, 1607, 1607, 1607, 1607, 1609, 1607, 1609, 1609, - 1609, 1609, 1611, 1609, 1611, 1611, 1611, 1611, 1612, 1611, 1612, 1612, - 1612, 1612, 1613, 1612, 1613, 1613, 1613, 1613, 1614, 1613, 1614, 1614, - 1614, 1614, 1616, 1614, 1616, 1616, 1616, 1616, 1618, 1616, 1618, 1618, - 1618, 1618, 1620, 1618, 1620, 1620, 1620, 1620, 1622, 1620, 1622, 1622, - 1622, 1622, 1624, 1622, 1624, 1624, 1624, 1624, 1626, 1624, 1626, 1626, - 1626, 1626, 1628, 1626, 1628, 1628, 1628, 1628, 1601, 1628, 1601, 1601, - 1630, 1631, 1632, 1631, 1633, 1632, 1632, 1633, 1634, 1633, 1635, 1634, - 1634, 1635, 1636, 1635, 1627, 1636, 1636, 1627, 1637, 1627, 1625, 1637, - 1637, 1625, 1638, 1625, 1623, 1638, 1638, 1623, 1639, 1623, 1621, 1639, - 1639, 1621, 1640, 1621, 1619, 1640, 1640, 1619, 1630, 1619, 1631, 1630, - 1630, 1630, 1632, 1630, 1632, 1632, 1632, 1632, 1634, 1632, 1634, 1634, - 1634, 1634, 1636, 1634, 1636, 1636, 1636, 1636, 1637, 1636, 1637, 1637, - 1637, 1637, 1638, 1637, 1638, 1638, 1638, 1638, 1639, 1638, 1639, 1639, - 1639, 1639, 1640, 1639, 1640, 1640, 1640, 1640, 1630, 1640, 1630, 1630, - 1641, 1642, 1643, 1642, 1644, 1643, 1643, 1644, 1645, 1644, 1646, 1645, - 1645, 1646, 1647, 1646, 1648, 1647, 1647, 1648, 1649, 1648, 1650, 1649, - 1649, 1650, 1651, 1650, 1652, 1651, 1651, 1652, 1653, 1652, 1654, 1653, - 1653, 1654, 1655, 1654, 1656, 1655, 1655, 1656, 1657, 1656, 1658, 1657, - 1657, 1658, 1659, 1658, 1660, 1659, 1659, 1660, 1641, 1660, 1642, 1641, - 1641, 1641, 1643, 1641, 1643, 1643, 1643, 1643, 1645, 1643, 1645, 1645, - 1645, 1645, 1647, 1645, 1647, 1647, 1647, 1647, 1649, 1647, 1649, 1649, - 1649, 1649, 1651, 1649, 1651, 1651, 1651, 1651, 1653, 1651, 1653, 1653, - 1653, 1653, 1655, 1653, 1655, 1655, 1655, 1655, 1657, 1655, 1657, 1657, - 1657, 1657, 1659, 1657, 1659, 1659, 1659, 1659, 1641, 1659, 1641, 1641, - 1653, 1654, 1661, 1654, 1662, 1661, 1661, 1662, 221, 1662, 222, 221, - 221, 222, 219, 222, 220, 219, 219, 220, 1663, 220, 1664, 1663, - 1663, 1664, 1665, 1664, 1666, 1665, 1665, 1666, 211, 1666, 212, 211, - 211, 212, 209, 212, 210, 209, 209, 210, 1667, 210, 1668, 1667, - 1667, 1668, 1655, 1668, 1656, 1655, 1655, 1656, 1653, 1656, 1654, 1653, - 1653, 1653, 1661, 1653, 1661, 1661, 1661, 1661, 221, 1661, 221, 221, - 221, 221, 219, 221, 219, 219, 219, 219, 1663, 219, 1663, 1663, - 1663, 1663, 1665, 1663, 1665, 1665, 1665, 1665, 211, 1665, 211, 211, - 211, 211, 209, 211, 209, 209, 209, 209, 1667, 209, 1667, 1667, - 1667, 1667, 1655, 1667, 1655, 1655, 1655, 1655, 1653, 1655, 1653, 1653, - 1641, 1642, 1659, 1642, 1660, 1659, 1659, 1660, 1669, 1660, 1670, 1669, - 1669, 1670, 1671, 1670, 1672, 1671, 1671, 1672, 1673, 1672, 1674, 1673, - 1673, 1674, 1675, 1674, 1676, 1675, 1675, 1676, 1649, 1676, 1650, 1649, - 1649, 1650, 1647, 1650, 1648, 1647, 1647, 1648, 1677, 1648, 1678, 1677, - 1677, 1678, 1679, 1678, 1680, 1679, 1679, 1680, 1641, 1680, 1642, 1641, - 1641, 1641, 1659, 1641, 1659, 1659, 1659, 1659, 1669, 1659, 1669, 1669, - 1669, 1669, 1671, 1669, 1671, 1671, 1671, 1671, 1673, 1671, 1673, 1673, - 1673, 1673, 1675, 1673, 1675, 1675, 1675, 1675, 1649, 1675, 1649, 1649, - 1649, 1649, 1647, 1649, 1647, 1647, 1647, 1647, 1677, 1647, 1677, 1677, - 1677, 1677, 1679, 1677, 1679, 1679, 1679, 1679, 1641, 1679, 1641, 1641, - 1673, 1674, 1671, 1674, 1672, 1671, 1671, 1672, 1681, 1672, 1682, 1681, - 1681, 1682, 1683, 1682, 1684, 1683, 1683, 1684, 1685, 1684, 1686, 1685, - 1685, 1686, 1687, 1686, 1688, 1687, 1687, 1688, 1689, 1688, 1690, 1689, - 1689, 1690, 1691, 1690, 1692, 1691, 1691, 1692, 1693, 1692, 1694, 1693, - 1693, 1694, 1695, 1694, 1696, 1695, 1695, 1696, 1673, 1696, 1674, 1673, - 1673, 1673, 1671, 1673, 1671, 1671, 1671, 1671, 1681, 1671, 1681, 1681, - 1681, 1681, 1683, 1681, 1683, 1683, 1683, 1683, 1685, 1683, 1685, 1685, - 1685, 1685, 1687, 1685, 1687, 1687, 1687, 1687, 1689, 1687, 1689, 1689, - 1689, 1689, 1691, 1689, 1691, 1691, 1691, 1691, 1693, 1691, 1693, 1693, - 1693, 1693, 1695, 1693, 1695, 1695, 1695, 1695, 1673, 1695, 1673, 1673, - 1697, 1698, 1699, 1698, 1700, 1699, 1699, 1700, 1701, 1700, 1702, 1701, - 1701, 1702, 1703, 1702, 1704, 1703, 1703, 1704, 1705, 1704, 1706, 1705, - 1705, 1706, 1707, 1706, 1708, 1707, 1707, 1708, 1709, 1708, 1710, 1709, - 1709, 1710, 1711, 1710, 1712, 1711, 1711, 1712, 1713, 1712, 1714, 1713, - 1713, 1714, 1715, 1714, 1716, 1715, 1715, 1716, 1717, 1716, 1718, 1717, - 1717, 1718, 1719, 1718, 1720, 1719, 1719, 1720, 1721, 1720, 1722, 1721, - 1721, 1722, 1723, 1722, 1724, 1723, 1723, 1724, 1725, 1724, 1726, 1725, - 1725, 1726, 1727, 1726, 1728, 1727, 1727, 1728, 1729, 1728, 1730, 1729, - 1729, 1730, 1697, 1730, 1698, 1697, 1697, 1697, 1699, 1697, 1699, 1699, - 1699, 1699, 1701, 1699, 1701, 1701, 1701, 1701, 1703, 1701, 1703, 1703, - 1703, 1703, 1705, 1703, 1705, 1705, 1705, 1705, 1707, 1705, 1707, 1707, - 1707, 1707, 1709, 1707, 1709, 1709, 1709, 1709, 1711, 1709, 1711, 1711, - 1711, 1711, 1713, 1711, 1713, 1713, 1713, 1713, 1715, 1713, 1715, 1715, - 1715, 1715, 1717, 1715, 1717, 1717, 1717, 1717, 1719, 1717, 1719, 1719, - 1719, 1719, 1721, 1719, 1721, 1721, 1721, 1721, 1723, 1721, 1723, 1723, - 1723, 1723, 1725, 1723, 1725, 1725, 1725, 1725, 1727, 1725, 1727, 1727, - 1727, 1727, 1729, 1727, 1729, 1729, 1729, 1729, 1697, 1729, 1697, 1697, - 1731, 1724, 1732, 1724, 1722, 1732, 1732, 1722, 1733, 1722, 1720, 1733, - 1733, 1720, 1734, 1720, 1718, 1734, 1734, 1718, 1731, 1718, 1724, 1731, - 1731, 1731, 1732, 1731, 1732, 1732, 1732, 1732, 1733, 1732, 1733, 1733, - 1733, 1733, 1734, 1733, 1734, 1734, 1734, 1734, 1731, 1734, 1731, 1731, - 1735, 1714, 1736, 1714, 1712, 1736, 1736, 1712, 1737, 1712, 1710, 1737, - 1737, 1710, 1738, 1710, 1708, 1738, 1738, 1708, 1735, 1708, 1714, 1735, - 1735, 1735, 1736, 1735, 1736, 1736, 1736, 1736, 1737, 1736, 1737, 1737, - 1737, 1737, 1738, 1737, 1738, 1738, 1738, 1738, 1735, 1738, 1735, 1735, - 1739, 1706, 1740, 1706, 1704, 1740, 1740, 1704, 1741, 1704, 1702, 1741, - 1741, 1702, 1742, 1702, 1700, 1742, 1742, 1700, 1743, 1700, 1744, 1743, - 1743, 1744, 1745, 1744, 1746, 1745, 1745, 1746, 1739, 1746, 1706, 1739, - 1739, 1739, 1740, 1739, 1740, 1740, 1740, 1740, 1741, 1740, 1741, 1741, - 1741, 1741, 1742, 1741, 1742, 1742, 1742, 1742, 1743, 1742, 1743, 1743, - 1743, 1743, 1745, 1743, 1745, 1745, 1745, 1745, 1739, 1745, 1739, 1739, - 1747, 1748, 1749, 1748, 1750, 1749, 1749, 1750, 1751, 1750, 1752, 1751, - 1751, 1752, 1753, 1752, 1754, 1753, 1753, 1754, 1755, 1754, 1756, 1755, - 1755, 1756, 1757, 1756, 1758, 1757, 1757, 1758, 1759, 1758, 1760, 1759, - 1759, 1760, 1761, 1760, 1762, 1761, 1761, 1762, 1763, 1762, 1764, 1763, - 1763, 1764, 1765, 1764, 1766, 1765, 1765, 1766, 1693, 1766, 1694, 1693, - 1693, 1694, 1691, 1694, 1692, 1691, 1691, 1692, 1685, 1692, 1686, 1685, - 1685, 1686, 1683, 1686, 1684, 1683, 1683, 1684, 1767, 1684, 1768, 1767, - 1767, 1768, 1769, 1768, 1770, 1769, 1769, 1770, 1747, 1770, 1748, 1747, - 1747, 1747, 1749, 1747, 1749, 1749, 1749, 1749, 1751, 1749, 1751, 1751, - 1751, 1751, 1753, 1751, 1753, 1753, 1753, 1753, 1755, 1753, 1755, 1755, - 1755, 1755, 1757, 1755, 1757, 1757, 1757, 1757, 1759, 1757, 1759, 1759, - 1759, 1759, 1761, 1759, 1761, 1761, 1761, 1761, 1763, 1761, 1763, 1763, - 1763, 1763, 1765, 1763, 1765, 1765, 1765, 1765, 1693, 1765, 1693, 1693, - 1693, 1693, 1691, 1693, 1691, 1691, 1691, 1691, 1685, 1691, 1685, 1685, - 1685, 1685, 1683, 1685, 1683, 1683, 1683, 1683, 1767, 1683, 1767, 1767, - 1767, 1767, 1769, 1767, 1769, 1769, 1769, 1769, 1747, 1769, 1747, 1747, - 1753, 1754, 1771, 1754, 1772, 1771, 1771, 1772, 1773, 1772, 1774, 1773, - 1773, 1774, 1775, 1774, 1776, 1775, 1775, 1776, 1747, 1776, 1748, 1747, - 1747, 1748, 1769, 1748, 1770, 1769, 1769, 1770, 1777, 1770, 1778, 1777, - 1777, 1778, 1779, 1778, 1780, 1779, 1779, 1780, 1781, 1780, 1782, 1781, - 1781, 1782, 1783, 1782, 1784, 1783, 1783, 1784, 1785, 1784, 1786, 1785, - 1785, 1786, 1787, 1786, 1788, 1787, 1787, 1788, 1763, 1788, 1764, 1763, - 1763, 1764, 1761, 1764, 1762, 1761, 1761, 1762, 1789, 1762, 1790, 1789, - 1789, 1790, 1791, 1790, 1792, 1791, 1791, 1792, 1793, 1792, 1794, 1793, - 1793, 1794, 1755, 1794, 1756, 1755, 1755, 1756, 1753, 1756, 1754, 1753, - 1753, 1753, 1771, 1753, 1771, 1771, 1771, 1771, 1773, 1771, 1773, 1773, - 1773, 1773, 1775, 1773, 1775, 1775, 1775, 1775, 1747, 1775, 1747, 1747, - 1747, 1747, 1769, 1747, 1769, 1769, 1769, 1769, 1777, 1769, 1777, 1777, - 1777, 1777, 1779, 1777, 1779, 1779, 1779, 1779, 1781, 1779, 1781, 1781, - 1781, 1781, 1783, 1781, 1783, 1783, 1783, 1783, 1785, 1783, 1785, 1785, - 1785, 1785, 1787, 1785, 1787, 1787, 1787, 1787, 1763, 1787, 1763, 1763, - 1763, 1763, 1761, 1763, 1761, 1761, 1761, 1761, 1789, 1761, 1789, 1789, - 1789, 1789, 1791, 1789, 1791, 1791, 1791, 1791, 1793, 1791, 1793, 1793, - 1793, 1793, 1755, 1793, 1755, 1755, 1755, 1755, 1753, 1755, 1753, 1753, - 1795, 1796, 1797, 1796, 1798, 1797, 1797, 1798, 1799, 1798, 1800, 1799, - 1799, 1800, 1801, 1800, 1802, 1801, 1801, 1802, 1795, 1802, 1796, 1795, - 1795, 1795, 1797, 1795, 1797, 1797, 1797, 1797, 1799, 1797, 1799, 1799, - 1799, 1799, 1801, 1799, 1801, 1801, 1801, 1801, 1795, 1801, 1795, 1795, - 1803, 1804, 1805, 1804, 1806, 1805, 1805, 1806, 1807, 1806, 1808, 1807, - 1807, 1808, 1809, 1808, 1810, 1809, 1809, 1810, 1811, 1810, 1812, 1811, - 1811, 1812, 1803, 1812, 1804, 1803, 1803, 1803, 1805, 1803, 1805, 1805, - 1805, 1805, 1807, 1805, 1807, 1807, 1807, 1807, 1809, 1807, 1809, 1809, - 1809, 1809, 1811, 1809, 1811, 1811, 1811, 1811, 1803, 1811, 1803, 1803, - 1813, 1814, 1815, 1814, 1816, 1815, 1815, 1816, 1817, 1816, 1818, 1817, - 1817, 1818, 1819, 1818, 1810, 1819, 1819, 1810, 1820, 1810, 1808, 1820, - 1820, 1808, 1813, 1808, 1814, 1813, 1813, 1813, 1815, 1813, 1815, 1815, - 1815, 1815, 1817, 1815, 1817, 1817, 1817, 1817, 1819, 1817, 1819, 1819, - 1819, 1819, 1820, 1819, 1820, 1820, 1820, 1820, 1813, 1820, 1813, 1813, - 1815, 1816, 1813, 1816, 1814, 1813, 1813, 1814, 1797, 1814, 1798, 1797, - 1797, 1798, 1795, 1798, 1796, 1795, 1795, 1796, 1821, 1796, 1822, 1821, - 1821, 1822, 1815, 1822, 1816, 1815, 1815, 1815, 1813, 1815, 1813, 1813, - 1813, 1813, 1797, 1813, 1797, 1797, 1797, 1797, 1795, 1797, 1795, 1795, - 1795, 1795, 1821, 1795, 1821, 1821, 1821, 1821, 1815, 1821, 1815, 1815, - 225, 226, 1823, 226, 1824, 1823, 1823, 1824, 1825, 1824, 1826, 1825, - 1825, 1826, 1827, 1826, 1828, 1827, 1827, 1828, 1829, 1828, 1830, 1829, - 1829, 1830, 1831, 1830, 1832, 1831, 1831, 1832, 227, 1832, 228, 227, - 227, 228, 225, 228, 226, 225, 225, 225, 1823, 225, 1823, 1823, - 1823, 1823, 1825, 1823, 1825, 1825, 1825, 1825, 1827, 1825, 1827, 1827, - 1827, 1827, 1829, 1827, 1829, 1829, 1829, 1829, 1831, 1829, 1831, 1831, - 1831, 1831, 227, 1831, 227, 227, 227, 227, 225, 227, 225, 225, - 1803, 1804, 1833, 1804, 1834, 1833, 1833, 1834, 1835, 1834, 1836, 1835, - 1835, 1836, 1837, 1836, 1744, 1837, 1837, 1744, 1699, 1744, 1700, 1699, - 1699, 1700, 1697, 1700, 1698, 1697, 1697, 1698, 1838, 1698, 1839, 1838, - 1838, 1839, 1805, 1839, 1806, 1805, 1805, 1806, 1803, 1806, 1804, 1803, - 1803, 1803, 1833, 1803, 1833, 1833, 1833, 1833, 1835, 1833, 1835, 1835, - 1835, 1835, 1837, 1835, 1837, 1837, 1837, 1837, 1699, 1837, 1699, 1699, - 1699, 1699, 1697, 1699, 1697, 1697, 1697, 1697, 1838, 1697, 1838, 1838, - 1838, 1838, 1805, 1838, 1805, 1805, 1805, 1805, 1803, 1805, 1803, 1803, - 1840, 1841, 1842, 1841, 1843, 1842, 1842, 1843, 1844, 1843, 1845, 1844, - 1844, 1845, 1846, 1845, 1847, 1846, 1846, 1847, 1848, 1847, 1849, 1848, - 1848, 1849, 1850, 1849, 1851, 1850, 1850, 1851, 1852, 1851, 1853, 1852, - 1852, 1853, 1854, 1853, 1855, 1854, 1854, 1855, 1856, 1855, 1857, 1856, - 1856, 1857, 1858, 1857, 1859, 1858, 1858, 1859, 1860, 1859, 1861, 1860, - 1860, 1861, 1862, 1861, 1863, 1862, 1862, 1863, 1840, 1863, 1841, 1840, - 1840, 1840, 1842, 1840, 1842, 1842, 1842, 1842, 1844, 1842, 1844, 1844, - 1844, 1844, 1846, 1844, 1846, 1846, 1846, 1846, 1848, 1846, 1848, 1848, - 1848, 1848, 1850, 1848, 1850, 1850, 1850, 1850, 1852, 1850, 1852, 1852, - 1852, 1852, 1854, 1852, 1854, 1854, 1854, 1854, 1856, 1854, 1856, 1856, - 1856, 1856, 1858, 1856, 1858, 1858, 1858, 1858, 1860, 1858, 1860, 1860, - 1860, 1860, 1862, 1860, 1862, 1862, 1862, 1862, 1840, 1862, 1840, 1840, - 1864, 1865, 1866, 1865, 1867, 1866, 1866, 1867, 1868, 1867, 1869, 1868, - 1868, 1869, 1870, 1869, 1871, 1870, 1870, 1871, 1864, 1871, 1865, 1864, - 1864, 1864, 1866, 1864, 1866, 1866, 1866, 1866, 1868, 1866, 1868, 1868, - 1868, 1868, 1870, 1868, 1870, 1870, 1870, 1870, 1864, 1870, 1864, 1864, - 1872, 1873, 1874, 1873, 1875, 1874, 1874, 1875, 1876, 1875, 1877, 1876, - 1876, 1877, 1878, 1877, 1879, 1878, 1878, 1879, 1872, 1879, 1873, 1872, - 1872, 1872, 1874, 1872, 1874, 1874, 1874, 1874, 1876, 1874, 1876, 1876, - 1876, 1876, 1878, 1876, 1878, 1878, 1878, 1878, 1872, 1878, 1872, 1872, - 1880, 1881, 1882, 1881, 1883, 1882, 1882, 1883, 1884, 1883, 1885, 1884, - 1884, 1885, 1886, 1885, 348, 1886, 1886, 348, 1887, 348, 346, 1887, - 1887, 346, 1880, 346, 1881, 1880, 1880, 1880, 1882, 1880, 1882, 1882, - 1882, 1882, 1884, 1882, 1884, 1884, 1884, 1884, 1886, 1884, 1886, 1886, - 1886, 1886, 1887, 1886, 1887, 1887, 1887, 1887, 1880, 1887, 1880, 1880, - 1864, 1865, 1876, 1865, 1877, 1876, 1876, 1877, 1874, 1877, 1875, 1874, - 1874, 1875, 1888, 1875, 1889, 1888, 1888, 1889, 1866, 1889, 1867, 1866, - 1866, 1867, 1864, 1867, 1865, 1864, 1864, 1864, 1876, 1864, 1876, 1876, - 1876, 1876, 1874, 1876, 1874, 1874, 1874, 1874, 1888, 1874, 1888, 1888, - 1888, 1888, 1866, 1888, 1866, 1866, 1866, 1866, 1864, 1866, 1864, 1864, - 1848, 1849, 1890, 1849, 1891, 1890, 1890, 1891, 1892, 1891, 1893, 1892, - 1892, 1893, 267, 1893, 268, 267, 267, 268, 265, 268, 266, 265, - 265, 266, 1852, 266, 1853, 1852, 1852, 1853, 1850, 1853, 1851, 1850, - 1850, 1851, 1848, 1851, 1849, 1848, 1848, 1848, 1890, 1848, 1890, 1890, - 1890, 1890, 1892, 1890, 1892, 1892, 1892, 1892, 267, 1892, 267, 267, - 267, 267, 265, 267, 265, 265, 265, 265, 1852, 265, 1852, 1852, - 1852, 1852, 1850, 1852, 1850, 1850, 1850, 1850, 1848, 1850, 1848, 1848, - 1880, 1881, 1872, 1881, 1873, 1872, 1872, 1873, 1878, 1873, 1879, 1878, - 1878, 1879, 1894, 1879, 1895, 1894, 1894, 1895, 1896, 1895, 1897, 1896, - 1896, 1897, 1842, 1897, 1843, 1842, 1842, 1843, 1840, 1843, 1841, 1840, - 1840, 1841, 1898, 1841, 1899, 1898, 1898, 1899, 1882, 1899, 1883, 1882, - 1882, 1883, 1880, 1883, 1881, 1880, 1880, 1880, 1872, 1880, 1872, 1872, - 1872, 1872, 1878, 1872, 1878, 1878, 1878, 1878, 1894, 1878, 1894, 1894, - 1894, 1894, 1896, 1894, 1896, 1896, 1896, 1896, 1842, 1896, 1842, 1842, - 1842, 1842, 1840, 1842, 1840, 1840, 1840, 1840, 1898, 1840, 1898, 1898, - 1898, 1898, 1882, 1898, 1882, 1882, 1882, 1882, 1880, 1882, 1880, 1880, - 1900, 1901, 1902, 1901, 1903, 1902, 1902, 1903, 1904, 1903, 1905, 1904, - 1904, 1905, 1906, 1905, 1907, 1906, 1906, 1907, 1908, 1907, 1909, 1908, - 1908, 1909, 1910, 1909, 1911, 1910, 1910, 1911, 1900, 1911, 1901, 1900, - 1900, 1900, 1902, 1900, 1902, 1902, 1902, 1902, 1904, 1902, 1904, 1904, - 1904, 1904, 1906, 1904, 1906, 1906, 1906, 1906, 1908, 1906, 1908, 1908, - 1908, 1908, 1910, 1908, 1910, 1910, 1910, 1910, 1900, 1910, 1900, 1900, - 1912, 1913, 1914, 1913, 1915, 1914, 1914, 1915, 1904, 1915, 1905, 1904, - 1904, 1905, 1902, 1905, 1903, 1902, 1902, 1903, 1900, 1903, 1901, 1900, - 1900, 1901, 1916, 1901, 1917, 1916, 1916, 1917, 1912, 1917, 1913, 1912, - 1912, 1912, 1914, 1912, 1914, 1914, 1914, 1914, 1904, 1914, 1904, 1904, - 1904, 1904, 1902, 1904, 1902, 1902, 1902, 1902, 1900, 1902, 1900, 1900, - 1900, 1900, 1916, 1900, 1916, 1916, 1916, 1916, 1912, 1916, 1912, 1912, - 1918, 1919, 1920, 1919, 1921, 1920, 1920, 1921, 1922, 1921, 1923, 1922, - 1922, 1923, 1914, 1923, 1915, 1914, 1914, 1915, 1912, 1915, 1913, 1912, - 1912, 1913, 1916, 1913, 1917, 1916, 1916, 1917, 1924, 1917, 1925, 1924, - 1924, 1925, 1926, 1925, 1927, 1926, 1926, 1927, 1918, 1927, 1919, 1918, - 1918, 1918, 1920, 1918, 1920, 1920, 1920, 1920, 1922, 1920, 1922, 1922, - 1922, 1922, 1914, 1922, 1914, 1914, 1914, 1914, 1912, 1914, 1912, 1912, - 1912, 1912, 1916, 1912, 1916, 1916, 1916, 1916, 1924, 1916, 1924, 1924, - 1924, 1924, 1926, 1924, 1926, 1926, 1926, 1926, 1918, 1926, 1918, 1918, - 1920, 1921, 1918, 1921, 1919, 1918, 1918, 1919, 1926, 1919, 1927, 1926, - 1926, 1927, 1924, 1927, 1925, 1924, 1924, 1925, 1928, 1925, 1929, 1928, - 1928, 1929, 1930, 1929, 1931, 1930, 1930, 1931, 1932, 1931, 1933, 1932, - 1932, 1933, 1934, 1933, 1935, 1934, 1934, 1935, 1936, 1935, 1937, 1936, - 1936, 1937, 1938, 1937, 1939, 1938, 1938, 1939, 1920, 1939, 1921, 1920, - 1920, 1920, 1918, 1920, 1918, 1918, 1918, 1918, 1926, 1918, 1926, 1926, - 1926, 1926, 1924, 1926, 1924, 1924, 1924, 1924, 1928, 1924, 1928, 1928, - 1928, 1928, 1930, 1928, 1930, 1930, 1930, 1930, 1932, 1930, 1932, 1932, - 1932, 1932, 1934, 1932, 1934, 1934, 1934, 1934, 1936, 1934, 1936, 1936, - 1936, 1936, 1938, 1936, 1938, 1938, 1938, 1938, 1920, 1938, 1920, 1920, - 1940, 1941, 1942, 1941, 1943, 1942, 1942, 1943, 1944, 1943, 1945, 1944, - 1944, 1945, 1946, 1945, 1947, 1946, 1946, 1947, 1948, 1947, 1949, 1948, - 1948, 1949, 1950, 1949, 1951, 1950, 1950, 1951, 1940, 1951, 1941, 1940, - 1940, 1940, 1942, 1940, 1942, 1942, 1942, 1942, 1944, 1942, 1944, 1944, - 1944, 1944, 1946, 1944, 1946, 1946, 1946, 1946, 1948, 1946, 1948, 1948, - 1948, 1948, 1950, 1948, 1950, 1950, 1950, 1950, 1940, 1950, 1940, 1940, - 1948, 1949, 1946, 1949, 1947, 1946, 1946, 1947, 1944, 1947, 1945, 1944, - 1944, 1945, 1952, 1945, 1953, 1952, 1952, 1953, 1954, 1953, 1955, 1954, - 1954, 1955, 1956, 1955, 1957, 1956, 1956, 1957, 1958, 1957, 1959, 1958, - 1958, 1959, 1960, 1959, 1961, 1960, 1960, 1961, 1934, 1961, 1935, 1934, - 1934, 1935, 1932, 1935, 1933, 1932, 1932, 1933, 1930, 1933, 1931, 1930, - 1930, 1931, 1928, 1931, 1929, 1928, 1928, 1929, 1948, 1929, 1949, 1948, - 1948, 1948, 1946, 1948, 1946, 1946, 1946, 1946, 1944, 1946, 1944, 1944, - 1944, 1944, 1952, 1944, 1952, 1952, 1952, 1952, 1954, 1952, 1954, 1954, - 1954, 1954, 1956, 1954, 1956, 1956, 1956, 1956, 1958, 1956, 1958, 1958, - 1958, 1958, 1960, 1958, 1960, 1960, 1960, 1960, 1934, 1960, 1934, 1934, - 1934, 1934, 1932, 1934, 1932, 1932, 1932, 1932, 1930, 1932, 1930, 1930, - 1930, 1930, 1928, 1930, 1928, 1928, 1928, 1928, 1948, 1928, 1948, 1948, - 283, 284, 1962, 284, 308, 1962, 1962, 308, 1963, 308, 1964, 1963, - 1963, 1964, 1965, 1964, 1966, 1965, 1965, 1966, 1967, 1966, 1968, 1967, - 1967, 1968, 285, 1968, 286, 285, 285, 286, 283, 286, 284, 283, - 283, 283, 1962, 283, 1962, 1962, 1962, 1962, 1963, 1962, 1963, 1963, - 1963, 1963, 1965, 1963, 1965, 1965, 1965, 1965, 1967, 1965, 1967, 1967, - 1967, 1967, 285, 1967, 285, 285, 285, 285, 283, 285, 283, 283, - 289, 290, 1969, 290, 1970, 1969, 1969, 1970, 1971, 1970, 1972, 1971, - 1971, 1972, 1973, 1972, 1974, 1973, 1973, 1974, 1975, 1974, 1976, 1975, - 1975, 1976, 1977, 1976, 1978, 1977, 1977, 1978, 1979, 1978, 306, 1979, - 1979, 306, 281, 306, 282, 281, 281, 282, 289, 282, 290, 289, - 289, 289, 1969, 289, 1969, 1969, 1969, 1969, 1971, 1969, 1971, 1971, - 1971, 1971, 1973, 1971, 1973, 1973, 1973, 1973, 1975, 1973, 1975, 1975, - 1975, 1975, 1977, 1975, 1977, 1977, 1977, 1977, 1979, 1977, 1979, 1979, - 1979, 1979, 281, 1979, 281, 281, 281, 281, 289, 281, 289, 289, - 1533, 1534, 1531, 1534, 1532, 1531, 1531, 1532, 1632, 1532, 1633, 1632, - 1632, 1633, 1630, 1633, 1631, 1630, 1630, 1631, 1640, 1631, 1619, 1640, - 1640, 1619, 1980, 1619, 1617, 1980, 1980, 1617, 1981, 1617, 1615, 1981, - 1981, 1615, 1533, 1615, 1534, 1533, 1533, 1533, 1531, 1533, 1531, 1531, - 1531, 1531, 1632, 1531, 1632, 1632, 1632, 1632, 1630, 1632, 1630, 1630, - 1630, 1630, 1640, 1630, 1640, 1640, 1640, 1640, 1980, 1640, 1980, 1980, - 1980, 1980, 1981, 1980, 1981, 1981, 1981, 1981, 1533, 1981, 1533, 1533, - 511, 512, 509, 512, 510, 509, 509, 510, 1982, 510, 618, 1982, - 1982, 618, 1983, 618, 616, 1983, 1983, 616, 1984, 616, 1985, 1984, - 1984, 1985, 1986, 1985, 1987, 1986, 1986, 1987, 625, 1987, 626, 625, - 625, 626, 631, 626, 632, 631, 631, 632, 511, 632, 512, 511, - 511, 511, 509, 511, 509, 509, 509, 509, 1982, 509, 1982, 1982, - 1982, 1982, 1983, 1982, 1983, 1983, 1983, 1983, 1984, 1983, 1984, 1984, - 1984, 1984, 1986, 1984, 1986, 1986, 1986, 1986, 625, 1986, 625, 625, - 625, 625, 631, 625, 631, 631, 631, 631, 511, 631, 511, 511, - 491, 492, 489, 492, 490, 489, 489, 490, 1988, 490, 1989, 1988, - 1988, 1989, 1990, 1989, 1991, 1990, 1990, 1991, 1992, 1991, 1993, 1992, - 1992, 1993, 1994, 1993, 1995, 1994, 1994, 1995, 491, 1995, 492, 491, - 491, 491, 489, 491, 489, 489, 489, 489, 1988, 489, 1988, 1988, - 1988, 1988, 1990, 1988, 1990, 1990, 1990, 1990, 1992, 1990, 1992, 1992, - 1992, 1992, 1994, 1992, 1994, 1994, 1994, 1994, 491, 1994, 491, 491, - 1996, 1997, 1998, 1997, 1999, 1998, 1998, 1999, 2000, 1999, 2001, 2000, - 2000, 2001, 2002, 2001, 2003, 2002, 2002, 2003, 2004, 2003, 2005, 2004, - 2004, 2005, 2006, 2005, 2007, 2006, 2006, 2007, 2008, 2007, 2009, 2008, - 2008, 2009, 2010, 2009, 2011, 2010, 2010, 2011, 2012, 2011, 2013, 2012, - 2012, 2013, 2014, 2013, 2015, 2014, 2014, 2015, 2016, 2015, 2017, 2016, - 2016, 2017, 2018, 2017, 2019, 2018, 2018, 2019, 2020, 2019, 2021, 2020, - 2020, 2021, 1996, 2021, 1997, 1996, 1996, 1996, 1998, 1996, 1998, 1998, - 1998, 1998, 2000, 1998, 2000, 2000, 2000, 2000, 2002, 2000, 2002, 2002, - 2002, 2002, 2004, 2002, 2004, 2004, 2004, 2004, 2006, 2004, 2006, 2006, - 2006, 2006, 2008, 2006, 2008, 2008, 2008, 2008, 2010, 2008, 2010, 2010, - 2010, 2010, 2012, 2010, 2012, 2012, 2012, 2012, 2014, 2012, 2014, 2014, - 2014, 2014, 2016, 2014, 2016, 2016, 2016, 2016, 2018, 2016, 2018, 2018, - 2018, 2018, 2020, 2018, 2020, 2020, 2020, 2020, 1996, 2020, 1996, 1996, - 2022, 2023, 2024, 2023, 2025, 2024, 2024, 2025, 2026, 2025, 2027, 2026, - 2026, 2027, 2028, 2027, 2029, 2028, 2028, 2029, 2030, 2029, 2031, 2030, - 2030, 2031, 2032, 2031, 2033, 2032, 2032, 2033, 2034, 2033, 2035, 2034, - 2034, 2035, 2036, 2035, 2037, 2036, 2036, 2037, 2038, 2037, 2039, 2038, - 2038, 2039, 2040, 2039, 2041, 2040, 2040, 2041, 2042, 2041, 2043, 2042, - 2042, 2043, 2044, 2043, 2045, 2044, 2044, 2045, 2046, 2045, 2047, 2046, - 2046, 2047, 2048, 2047, 2049, 2048, 2048, 2049, 2050, 2049, 2051, 2050, - 2050, 2051, 2052, 2051, 2053, 2052, 2052, 2053, 2054, 2053, 2055, 2054, - 2054, 2055, 2056, 2055, 2057, 2056, 2056, 2057, 2058, 2057, 2059, 2058, - 2058, 2059, 2060, 2059, 2061, 2060, 2060, 2061, 2062, 2061, 2063, 2062, - 2062, 2063, 2064, 2063, 2065, 2064, 2064, 2065, 2066, 2065, 2067, 2066, - 2066, 2067, 2068, 2067, 2069, 2068, 2068, 2069, 2070, 2069, 2071, 2070, - 2070, 2071, 2072, 2071, 2073, 2072, 2072, 2073, 2074, 2073, 2075, 2074, - 2074, 2075, 2076, 2075, 2077, 2076, 2076, 2077, 2078, 2077, 2079, 2078, - 2078, 2079, 2080, 2079, 2081, 2080, 2080, 2081, 2082, 2081, 2083, 2082, - 2082, 2083, 2084, 2083, 2085, 2084, 2084, 2085, 2086, 2085, 2087, 2086, - 2086, 2087, 2088, 2087, 2089, 2088, 2088, 2089, 2090, 2089, 2091, 2090, - 2090, 2091, 2092, 2091, 2093, 2092, 2092, 2093, 2094, 2093, 2095, 2094, - 2094, 2095, 2096, 2095, 2097, 2096, 2096, 2097, 2098, 2097, 2099, 2098, - 2098, 2099, 2100, 2099, 2101, 2100, 2100, 2101, 2102, 2101, 2103, 2102, - 2102, 2103, 2104, 2103, 2105, 2104, 2104, 2105, 2106, 2105, 1999, 2106, - 2106, 1999, 2107, 1999, 1997, 2107, 2107, 1997, 2108, 1997, 2109, 2108, - 2108, 2109, 2110, 2109, 2111, 2110, 2110, 2111, 2112, 2111, 2113, 2112, - 2112, 2113, 2114, 2113, 2115, 2114, 2114, 2115, 2116, 2115, 2117, 2116, - 2116, 2117, 2022, 2117, 2023, 2022, 2022, 2022, 2024, 2022, 2024, 2024, - 2024, 2024, 2026, 2024, 2026, 2026, 2026, 2026, 2028, 2026, 2028, 2028, - 2028, 2028, 2030, 2028, 2030, 2030, 2030, 2030, 2032, 2030, 2032, 2032, - 2032, 2032, 2034, 2032, 2034, 2034, 2034, 2034, 2036, 2034, 2036, 2036, - 2036, 2036, 2038, 2036, 2038, 2038, 2038, 2038, 2040, 2038, 2040, 2040, - 2040, 2040, 2042, 2040, 2042, 2042, 2042, 2042, 2044, 2042, 2044, 2044, - 2044, 2044, 2046, 2044, 2046, 2046, 2046, 2046, 2048, 2046, 2048, 2048, - 2048, 2048, 2050, 2048, 2050, 2050, 2050, 2050, 2052, 2050, 2052, 2052, - 2052, 2052, 2054, 2052, 2054, 2054, 2054, 2054, 2056, 2054, 2056, 2056, - 2056, 2056, 2058, 2056, 2058, 2058, 2058, 2058, 2060, 2058, 2060, 2060, - 2060, 2060, 2062, 2060, 2062, 2062, 2062, 2062, 2064, 2062, 2064, 2064, - 2064, 2064, 2066, 2064, 2066, 2066, 2066, 2066, 2068, 2066, 2068, 2068, - 2068, 2068, 2070, 2068, 2070, 2070, 2070, 2070, 2072, 2070, 2072, 2072, - 2072, 2072, 2074, 2072, 2074, 2074, 2074, 2074, 2076, 2074, 2076, 2076, - 2076, 2076, 2078, 2076, 2078, 2078, 2078, 2078, 2080, 2078, 2080, 2080, - 2080, 2080, 2082, 2080, 2082, 2082, 2082, 2082, 2084, 2082, 2084, 2084, - 2084, 2084, 2086, 2084, 2086, 2086, 2086, 2086, 2088, 2086, 2088, 2088, - 2088, 2088, 2090, 2088, 2090, 2090, 2090, 2090, 2092, 2090, 2092, 2092, - 2092, 2092, 2094, 2092, 2094, 2094, 2094, 2094, 2096, 2094, 2096, 2096, - 2096, 2096, 2098, 2096, 2098, 2098, 2098, 2098, 2100, 2098, 2100, 2100, - 2100, 2100, 2102, 2100, 2102, 2102, 2102, 2102, 2104, 2102, 2104, 2104, - 2104, 2104, 2106, 2104, 2106, 2106, 2106, 2106, 2107, 2106, 2107, 2107, - 2107, 2107, 2108, 2107, 2108, 2108, 2108, 2108, 2110, 2108, 2110, 2110, - 2110, 2110, 2112, 2110, 2112, 2112, 2112, 2112, 2114, 2112, 2114, 2114, - 2114, 2114, 2116, 2114, 2116, 2116, 2116, 2116, 2022, 2116, 2022, 2022, - 2118, 2119, 2120, 2119, 2121, 2120, 2120, 2121, 311, 2121, 2122, 311, - 311, 2122, 317, 2122, 2123, 317, 317, 2123, 2118, 2123, 2119, 2118, - 2118, 2118, 2120, 2118, 2120, 2120, 2120, 2120, 311, 2120, 311, 311, - 311, 311, 317, 311, 317, 317, 317, 317, 2118, 317, 2118, 2118, - 2122, 2121, 2119, 2123, 2122, 2119, 2118, 2124, 2125, 2124, 2126, 2125, - 2125, 2126, 2127, 2126, 2128, 2127, 2127, 2128, 2120, 2128, 2129, 2120, - 2120, 2129, 2118, 2129, 2124, 2118, 2118, 2118, 2125, 2118, 2125, 2125, - 2125, 2125, 2127, 2125, 2127, 2127, 2127, 2127, 2120, 2127, 2120, 2120, - 2120, 2120, 2118, 2120, 2118, 2118, 984, 891, 982, 891, 983, 982, - 982, 983, 2130, 983, 2131, 2130, 2130, 2131, 882, 2131, 883, 882, - 882, 883, 880, 883, 881, 880, 880, 881, 878, 881, 879, 878, - 878, 879, 876, 879, 877, 876, 876, 877, 874, 877, 875, 874, - 874, 875, 2132, 875, 893, 2132, 2132, 893, 984, 893, 891, 984, - 984, 984, 982, 984, 982, 982, 982, 982, 2130, 982, 2130, 2130, - 2130, 2130, 882, 2130, 882, 882, 882, 882, 880, 882, 880, 880, - 880, 880, 878, 880, 878, 878, 878, 878, 876, 878, 876, 876, - 876, 876, 874, 876, 874, 874, 874, 874, 2132, 874, 2132, 2132, - 2132, 2132, 984, 2132, 984, 984, 2133, 2134, 2135, 2134, 524, 2135, - 2135, 524, 2136, 524, 548, 2136, 2136, 548, 2137, 548, 2138, 2137, - 2137, 2138, 517, 2138, 518, 517, 517, 518, 515, 518, 516, 515, - 515, 516, 2133, 516, 2134, 2133, 2133, 2133, 2135, 2133, 2135, 2135, - 2135, 2135, 2136, 2135, 2136, 2136, 2136, 2136, 2137, 2136, 2137, 2137, - 2137, 2137, 517, 2137, 517, 517, 517, 517, 515, 517, 515, 515, - 515, 515, 2133, 515, 2133, 2133, 543, 544, 2139, 544, 2140, 2139, - 2139, 2140, 2141, 2140, 646, 2141, 2141, 646, 2142, 646, 644, 2142, - 2142, 644, 2143, 644, 2144, 2143, 2143, 2144, 2145, 2144, 2138, 2145, - 2145, 2138, 547, 2138, 548, 547, 547, 548, 545, 548, 546, 545, - 545, 546, 543, 546, 544, 543, 543, 543, 2139, 543, 2139, 2139, - 2139, 2139, 2141, 2139, 2141, 2141, 2141, 2141, 2142, 2141, 2142, 2142, - 2142, 2142, 2143, 2142, 2143, 2143, 2143, 2143, 2145, 2143, 2145, 2145, - 2145, 2145, 547, 2145, 547, 547, 547, 547, 545, 547, 545, 545, - 545, 545, 543, 545, 543, 543, 1986, 1987, 1984, 1987, 1985, 1984, - 1984, 1985, 2146, 1985, 2147, 2146, 2146, 2147, 2148, 2147, 2144, 2148, - 2148, 2144, 643, 2144, 644, 643, 643, 644, 641, 644, 642, 641, - 641, 642, 1986, 642, 1987, 1986, 1986, 1986, 1984, 1986, 1984, 1984, - 1984, 1984, 2146, 1984, 2146, 2146, 2146, 2146, 2148, 2146, 2148, 2148, - 2148, 2148, 643, 2148, 643, 643, 643, 643, 641, 643, 641, 641, - 641, 641, 1986, 641, 1986, 1986, 2143, 2144, 2149, 2144, 2147, 2149, - 2149, 2147, 2150, 2147, 1985, 2150, 2150, 1985, 615, 1985, 616, 615, - 615, 616, 621, 616, 520, 621, 621, 520, 2151, 520, 518, 2151, - 2151, 518, 2145, 518, 2138, 2145, 2145, 2138, 2143, 2138, 2144, 2143, - 2143, 2143, 2149, 2143, 2149, 2149, 2149, 2149, 2150, 2149, 2150, 2150, - 2150, 2150, 615, 2150, 615, 615, 615, 615, 621, 615, 621, 621, - 621, 621, 2151, 621, 2151, 2151, 2151, 2151, 2145, 2151, 2145, 2145, - 2145, 2145, 2143, 2145, 2143, 2143, 2152, 538, 2153, 538, 634, 2153, - 2153, 634, 2154, 634, 2155, 2154, 2154, 2155, 2156, 2155, 650, 2156, - 2156, 650, 2157, 650, 540, 2157, 2157, 540, 2158, 540, 2159, 2158, - 2158, 2159, 2152, 2159, 538, 2152, 2160, 2152, 2161, 2152, 2153, 2161, - 2161, 2153, 2162, 2153, 2154, 2162, 2162, 2154, 2163, 2154, 2156, 2163, - 2163, 2156, 2157, 2156, 2157, 2157, 2157, 2157, 2164, 2157, 2158, 2164, - 2164, 2158, 2160, 2158, 2152, 2160, 2165, 2166, 2167, 2166, 2168, 2167, - 2167, 2168, 2169, 2168, 2170, 2169, 2169, 2170, 2171, 2170, 1602, 2171, - 2171, 1602, 2172, 1602, 1629, 2172, 2172, 1629, 2173, 1629, 2174, 2173, - 2173, 2174, 2175, 2174, 2176, 2175, 2175, 2176, 2177, 2176, 1556, 2177, - 2177, 1556, 2178, 1556, 1554, 2178, 2178, 1554, 2179, 1554, 1582, 2179, - 2179, 1582, 2165, 1582, 2166, 2165, 2165, 2165, 2167, 2165, 2167, 2167, - 2167, 2167, 2169, 2167, 2169, 2169, 2169, 2169, 2171, 2169, 2171, 2171, - 2171, 2171, 2172, 2171, 2172, 2172, 2172, 2172, 2173, 2172, 2173, 2173, - 2173, 2173, 2175, 2173, 2175, 2175, 2175, 2175, 2177, 2175, 2177, 2177, - 2177, 2177, 2178, 2177, 2178, 2178, 2178, 2178, 2179, 2178, 2179, 2179, - 2179, 2179, 2165, 2179, 2165, 2165, 1561, 1540, 2180, 1540, 1538, 2180, - 2180, 1538, 2181, 1538, 1610, 2181, 2181, 1610, 2182, 1610, 1608, 2182, - 2182, 1608, 2183, 1608, 1606, 2183, 2183, 1606, 2184, 1606, 1604, 2184, - 2184, 1604, 2185, 1604, 1602, 2185, 2185, 1602, 2186, 1602, 2170, 2186, - 2186, 2170, 2187, 2170, 2168, 2187, 2187, 2168, 2188, 2168, 2166, 2188, - 2188, 2166, 1581, 2166, 1582, 1581, 1581, 1582, 1579, 1582, 1580, 1579, - 1579, 1580, 1566, 1580, 1567, 1566, 1566, 1567, 1564, 1567, 1565, 1564, - 1564, 1565, 1562, 1565, 1563, 1562, 1562, 1563, 1561, 1563, 1540, 1561, - 1561, 1561, 2180, 1561, 2180, 2180, 2180, 2180, 2181, 2180, 2181, 2181, - 2181, 2181, 2182, 2181, 2182, 2182, 2182, 2182, 2183, 2182, 2183, 2183, - 2183, 2183, 2184, 2183, 2184, 2184, 2184, 2184, 2185, 2184, 2185, 2185, - 2185, 2185, 2186, 2185, 2186, 2186, 2186, 2186, 2187, 2186, 2187, 2187, - 2187, 2187, 2188, 2187, 2188, 2188, 2188, 2188, 1581, 2188, 1581, 1581, - 1581, 1581, 1579, 1581, 1579, 1579, 1579, 1579, 1566, 1579, 1566, 1566, - 1566, 1566, 1564, 1566, 1564, 1564, 1564, 1564, 1562, 1564, 1562, 1562, - 1562, 1562, 1561, 1562, 1561, 1561, 2189, 1318, 2190, 1318, 1300, 2190, - 2190, 1300, 2191, 1300, 1298, 2191, 2191, 1298, 2192, 1298, 2193, 2192, - 2192, 2193, 2194, 2193, 1320, 2194, 2194, 1320, 2189, 1320, 1318, 2189, - 2189, 2189, 2190, 2189, 2190, 2190, 2190, 2190, 2191, 2190, 2191, 2191, - 2191, 2191, 2192, 2191, 2192, 2192, 2192, 2192, 2194, 2192, 2194, 2194, - 2194, 2194, 2189, 2194, 2189, 2189, 2205, 2198, 2206, 2198, 2196, 2206, - 2206, 2196, 2207, 2196, 2204, 2207, 2207, 2204, 2208, 2204, 2209, 2208, - 2208, 2209, 2210, 2209, 2211, 2210, 2210, 2211, 2212, 2211, 2213, 2212, - 2212, 2213, 2214, 2213, 2215, 2214, 2214, 2215, 2216, 2215, 2217, 2216, - 2216, 2217, 2218, 2217, 2219, 2218, 2218, 2219, 2220, 2219, 2221, 2220, - 2220, 2221, 2222, 2221, 2223, 2222, 2222, 2223, 2224, 2223, 2225, 2224, - 2224, 2225, 2226, 2225, 2227, 2226, 2226, 2227, 2228, 2227, 2229, 2228, - 2228, 2229, 2230, 2229, 2231, 2230, 2230, 2231, 2232, 2231, 2233, 2232, - 2232, 2233, 2234, 2233, 2235, 2234, 2234, 2235, 2236, 2235, 2237, 2236, - 2236, 2237, 2205, 2237, 2198, 2205, 2205, 2205, 2206, 2205, 2206, 2206, - 2206, 2206, 2207, 2206, 2207, 2207, 2207, 2207, 2208, 2207, 2208, 2208, - 2208, 2208, 2210, 2208, 2210, 2210, 2210, 2210, 2212, 2210, 2212, 2212, - 2212, 2212, 2214, 2212, 2214, 2214, 2214, 2214, 2216, 2214, 2216, 2216, - 2216, 2216, 2218, 2216, 2218, 2218, 2218, 2218, 2220, 2218, 2220, 2220, - 2220, 2220, 2222, 2220, 2222, 2222, 2222, 2222, 2224, 2222, 2224, 2224, - 2224, 2224, 2226, 2224, 2226, 2226, 2226, 2226, 2228, 2226, 2228, 2228, - 2228, 2228, 2230, 2228, 2230, 2230, 2230, 2230, 2232, 2230, 2232, 2232, - 2232, 2232, 2234, 2232, 2234, 2234, 2234, 2234, 2236, 2234, 2236, 2236, - 2236, 2236, 2205, 2236, 2205, 2205, 2238, 2239, 2240, 2239, 2241, 2240, - 2240, 2241, 2242, 2241, 2243, 2242, 2242, 2243, 2244, 2243, 2245, 2244, - 2244, 2245, 2246, 2245, 2247, 2246, 2246, 2247, 2248, 2247, 2249, 2248, - 2248, 2249, 2250, 2249, 2251, 2250, 2250, 2251, 2252, 2251, 2253, 2252, - 2252, 2253, 2254, 2253, 2255, 2254, 2254, 2255, 2256, 2255, 2257, 2256, - 2256, 2257, 2238, 2257, 2239, 2238, 2238, 2238, 2240, 2238, 2240, 2240, - 2240, 2240, 2242, 2240, 2242, 2242, 2242, 2242, 2244, 2242, 2244, 2244, - 2244, 2244, 2246, 2244, 2246, 2246, 2246, 2246, 2248, 2246, 2248, 2248, - 2248, 2248, 2250, 2248, 2250, 2250, 2250, 2250, 2252, 2250, 2252, 2252, - 2252, 2252, 2254, 2252, 2254, 2254, 2254, 2254, 2256, 2254, 2256, 2256, - 2256, 2256, 2238, 2256, 2238, 2238, 2258, 2247, 2259, 2247, 2245, 2259, - 2259, 2245, 2260, 2245, 2261, 2260, 2260, 2261, 2262, 2261, 2263, 2262, - 2262, 2263, 2264, 2263, 2265, 2264, 2264, 2265, 2258, 2265, 2247, 2258, - 2258, 2258, 2259, 2258, 2259, 2259, 2259, 2259, 2260, 2259, 2260, 2260, - 2260, 2260, 2262, 2260, 2262, 2262, 2262, 2262, 2264, 2262, 2264, 2264, - 2264, 2264, 2258, 2264, 2258, 2258, 2266, 2241, 2267, 2241, 2239, 2267, - 2267, 2239, 2268, 2239, 2257, 2268, 2268, 2257, 2269, 2257, 2270, 2269, - 2269, 2270, 2271, 2270, 2272, 2271, 2271, 2272, 2273, 2272, 2274, 2273, - 2273, 2274, 2275, 2274, 2276, 2275, 2275, 2276, 2277, 2276, 2278, 2277, - 2277, 2278, 2279, 2278, 2280, 2279, 2279, 2280, 2281, 2280, 2282, 2281, - 2281, 2282, 2266, 2282, 2241, 2266, 2266, 2266, 2267, 2266, 2267, 2267, - 2267, 2267, 2268, 2267, 2268, 2268, 2268, 2268, 2269, 2268, 2269, 2269, - 2269, 2269, 2271, 2269, 2271, 2271, 2271, 2271, 2273, 2271, 2273, 2273, - 2273, 2273, 2275, 2273, 2275, 2275, 2275, 2275, 2277, 2275, 2277, 2277, - 2277, 2277, 2279, 2277, 2279, 2279, 2279, 2279, 2281, 2279, 2281, 2281, - 2281, 2281, 2266, 2281, 2266, 2266, 2283, 2284, 2285, 2284, 2286, 2285, - 2285, 2286, 2287, 2286, 2288, 2287, 2287, 2288, 2289, 2288, 2290, 2289, - 2289, 2290, 2291, 2290, 2292, 2291, 2291, 2292, 2293, 2292, 2294, 2293, - 2293, 2294, 2295, 2294, 2296, 2295, 2295, 2296, 2297, 2296, 2298, 2297, - 2297, 2298, 2299, 2298, 2300, 2299, 2299, 2300, 2301, 2300, 2302, 2301, - 2301, 2302, 2303, 2302, 2304, 2303, 2303, 2304, 2305, 2304, 2306, 2305, - 2305, 2306, 2307, 2306, 2308, 2307, 2307, 2308, 2283, 2308, 2284, 2283, - 2283, 2283, 2285, 2283, 2285, 2285, 2285, 2285, 2287, 2285, 2287, 2287, - 2287, 2287, 2289, 2287, 2289, 2289, 2289, 2289, 2291, 2289, 2291, 2291, - 2291, 2291, 2293, 2291, 2293, 2293, 2293, 2293, 2295, 2293, 2295, 2295, - 2295, 2295, 2297, 2295, 2297, 2297, 2297, 2297, 2299, 2297, 2299, 2299, - 2299, 2299, 2301, 2299, 2301, 2301, 2301, 2301, 2303, 2301, 2303, 2303, - 2303, 2303, 2305, 2303, 2305, 2305, 2305, 2305, 2307, 2305, 2307, 2307, - 2307, 2307, 2283, 2307, 2283, 2283, 2309, 2310, 2311, 2310, 2312, 2311, - 2311, 2312, 2313, 2312, 2314, 2313, 2313, 2314, 2315, 2314, 2316, 2315, - 2315, 2316, 2317, 2316, 2318, 2317, 2317, 2318, 2319, 2318, 2290, 2319, - 2319, 2290, 2320, 2290, 2288, 2320, 2320, 2288, 2321, 2288, 2286, 2321, - 2321, 2286, 2322, 2286, 2323, 2322, 2322, 2323, 2324, 2323, 2325, 2324, - 2324, 2325, 2326, 2325, 2327, 2326, 2326, 2327, 2328, 2327, 2329, 2328, - 2328, 2329, 2330, 2329, 2331, 2330, 2330, 2331, 2332, 2331, 2333, 2332, - 2332, 2333, 2309, 2333, 2310, 2309, 2309, 2309, 2311, 2309, 2311, 2311, - 2311, 2311, 2313, 2311, 2313, 2313, 2313, 2313, 2315, 2313, 2315, 2315, - 2315, 2315, 2317, 2315, 2317, 2317, 2317, 2317, 2319, 2317, 2319, 2319, - 2319, 2319, 2320, 2319, 2320, 2320, 2320, 2320, 2321, 2320, 2321, 2321, - 2321, 2321, 2322, 2321, 2322, 2322, 2322, 2322, 2324, 2322, 2324, 2324, - 2324, 2324, 2326, 2324, 2326, 2326, 2326, 2326, 2328, 2326, 2328, 2328, - 2328, 2328, 2330, 2328, 2330, 2330, 2330, 2330, 2332, 2330, 2332, 2332, - 2332, 2332, 2309, 2332, 2309, 2309, 2334, 2335, 2336, 2335, 2337, 2336, - 2336, 2337, 2338, 2337, 2339, 2338, 2338, 2339, 2340, 2339, 2341, 2340, - 2340, 2341, 2342, 2341, 2343, 2342, 2342, 2343, 2344, 2343, 2345, 2344, - 2344, 2345, 2346, 2345, 2347, 2346, 2346, 2347, 2348, 2347, 2349, 2348, - 2348, 2349, 2350, 2349, 2351, 2350, 2350, 2351, 2352, 2351, 2353, 2352, - 2352, 2353, 2354, 2353, 2355, 2354, 2354, 2355, 2356, 2355, 2357, 2356, - 2356, 2357, 2358, 2357, 2359, 2358, 2358, 2359, 2360, 2359, 2361, 2360, - 2360, 2361, 2362, 2361, 2363, 2362, 2362, 2363, 2364, 2363, 2365, 2364, - 2364, 2365, 2366, 2365, 2367, 2366, 2366, 2367, 2368, 2367, 2369, 2368, - 2368, 2369, 2334, 2369, 2335, 2334, 2334, 2334, 2336, 2334, 2336, 2336, - 2336, 2336, 2338, 2336, 2338, 2338, 2338, 2338, 2340, 2338, 2340, 2340, - 2340, 2340, 2342, 2340, 2342, 2342, 2342, 2342, 2344, 2342, 2344, 2344, - 2344, 2344, 2346, 2344, 2346, 2346, 2346, 2346, 2348, 2346, 2348, 2348, - 2348, 2348, 2350, 2348, 2350, 2350, 2350, 2350, 2352, 2350, 2352, 2352, - 2352, 2352, 2354, 2352, 2354, 2354, 2354, 2354, 2356, 2354, 2356, 2356, - 2356, 2356, 2358, 2356, 2358, 2358, 2358, 2358, 2360, 2358, 2360, 2360, - 2360, 2360, 2362, 2360, 2362, 2362, 2362, 2362, 2364, 2362, 2364, 2364, - 2364, 2364, 2366, 2364, 2366, 2366, 2366, 2366, 2368, 2366, 2368, 2368, - 2368, 2368, 2334, 2368, 2334, 2334, 2338, 2339, 2336, 2339, 2337, 2336, - 2336, 2337, 2370, 2337, 2371, 2370, 2370, 2371, 2372, 2371, 2373, 2372, - 2372, 2373, 2374, 2373, 2375, 2374, 2374, 2375, 2376, 2375, 2377, 2376, - 2376, 2377, 2378, 2377, 2379, 2378, 2378, 2379, 2380, 2379, 2381, 2380, - 2380, 2381, 2382, 2381, 2383, 2382, 2382, 2383, 2384, 2383, 2385, 2384, - 2384, 2385, 2386, 2385, 2387, 2386, 2386, 2387, 2338, 2387, 2339, 2338, - 2338, 2338, 2336, 2338, 2336, 2336, 2336, 2336, 2370, 2336, 2370, 2370, - 2370, 2370, 2372, 2370, 2372, 2372, 2372, 2372, 2374, 2372, 2374, 2374, - 2374, 2374, 2376, 2374, 2376, 2376, 2376, 2376, 2378, 2376, 2378, 2378, - 2378, 2378, 2380, 2378, 2380, 2380, 2380, 2380, 2382, 2380, 2382, 2382, - 2382, 2382, 2384, 2382, 2384, 2384, 2384, 2384, 2386, 2384, 2386, 2386, - 2386, 2386, 2338, 2386, 2338, 2338 - ] - }, - { - "id": "shape1_part2", - "type": "TRIANGLES", - "indices": [ - 40, 42, 44, 70, 72, 74, 76, 70, 74, 80, 82, 84, - 38, 32, 34, 38, 34, 36, 44, 46, 48, 40, 44, 48, - 28, 32, 38, 54, 56, 58, 54, 50, 52, 54, 48, 50, - 48, 54, 58, 60, 48, 58, 48, 60, 66, 62, 66, 60, - 66, 40, 48, 62, 64, 66, 30, 32, 28, 88, 90, 0, - 40, 26, 28, 4, 6, 8, 40, 70, 26, 40, 28, 38, - 24, 26, 76, 66, 68, 70, 66, 70, 40, 4, 10, 16, - 10, 4, 8, 14, 10, 12, 14, 16, 10, 24, 78, 22, - 70, 76, 26, 80, 86, 78, 86, 80, 84, 20, 86, 88, - 2, 20, 88, 2, 88, 0, 20, 78, 86, 78, 24, 76, - 20, 22, 78, 20, 16, 18, 2, 16, 20, 4, 16, 2, - 104, 100, 102, 98, 100, 104, 106, 96, 98, 106, 98, 104, - 106, 108, 92, 96, 106, 92, 96, 92, 94, 116, 118, 120, - 112, 114, 116, 110, 112, 116, 110, 116, 120, 148, 152, 146, - 152, 156, 158, 146, 142, 144, 150, 152, 148, 146, 158, 142, - 146, 152, 158, 154, 156, 152, 194, 190, 192, 208, 194, 196, - 208, 196, 198, 207, 198, 160, 208, 198, 207, 194, 188, 190, - 200, 194, 208, 200, 188, 194, 164, 206, 160, 164, 160, 162, - 206, 164, 166, 207, 160, 206, 200, 184, 188, 184, 186, 188, - 200, 201, 184, 184, 201, 202, 182, 184, 202, 174, 203, 204, - 176, 202, 203, 176, 203, 174, 178, 202, 176, 180, 182, 202, - 178, 180, 202, 172, 174, 204, 166, 205, 206, 170, 166, 168, - 170, 205, 166, 204, 205, 170, 172, 204, 170, 229, 209, 211, - 215, 229, 211, 215, 211, 213, 223, 219, 221, 217, 219, 223, - 225, 217, 223, 215, 217, 225, 227, 229, 215, 225, 227, 215, - 231, 32, 30, 251, 253, 255, 30, 28, 26, 233, 30, 26, - 235, 30, 233, 245, 247, 251, 249, 251, 247, 255, 245, 251, - 235, 243, 245, 255, 231, 30, 255, 235, 245, 235, 255, 30, - 235, 241, 243, 237, 239, 235, 239, 241, 235, 263, 257, 259, - 263, 259, 261, 265, 271, 257, 263, 265, 257, 267, 271, 265, - 269, 271, 267, 275, 277, 279, 273, 275, 279, 281, 283, 285, - 289, 281, 285, 289, 285, 287, 299, 303, 293, 291, 293, 303, - 293, 295, 299, 301, 303, 299, 297, 299, 295, 305, 307, 309, - 310, 305, 309, 311, 315, 317, 313, 315, 311, 347, 349, 351, - 365, 351, 353, 367, 347, 351, 363, 365, 353, 363, 353, 355, - 359, 355, 357, 361, 355, 359, 363, 355, 361, 365, 367, 351, - 345, 347, 367, 381, 383, 385, 387, 370, 385, 381, 385, 370, - 369, 370, 387, 371, 381, 370, 372, 379, 381, 371, 372, 381, - 373, 379, 372, 374, 377, 379, 373, 374, 379, 375, 377, 374, - 389, 395, 399, 391, 393, 389, 393, 395, 389, 397, 399, 395, - 409, 411, 413, 405, 409, 413, 405, 413, 415, 405, 415, 401, - 403, 405, 401, 407, 409, 405, 427, 429, 431, 423, 427, 431, - 425, 427, 423, 423, 431, 433, 421, 423, 433, 421, 433, 417, - 419, 421, 417, 436, 438, 440, 442, 436, 440, 435, 436, 442, - 450, 435, 442, 450, 442, 444, 449, 450, 444, 449, 444, 446, - 448, 449, 446, 472, 474, 475, 468, 470, 472, 477, 472, 475, - 477, 475, 476, 466, 468, 472, 466, 472, 477, 464, 466, 477, - 464, 477, 478, 480, 478, 479, 452, 480, 451, 452, 478, 480, - 462, 464, 478, 478, 454, 462, 452, 454, 478, 460, 462, 454, - 458, 460, 454, 456, 458, 454, 295, 481, 483, 293, 481, 295, - 487, 303, 301, 301, 299, 297, 485, 487, 301, 485, 301, 297, - 495, 491, 493, 489, 491, 495, 493, 499, 501, 497, 499, 493, - 495, 493, 501, 497, 503, 499, 507, 503, 497, 505, 507, 497, - 513, 515, 517, 521, 513, 517, 521, 517, 519, 511, 513, 521, - 511, 521, 509, 545, 523, 525, 545, 525, 527, 547, 523, 545, - 543, 545, 527, 527, 529, 531, 535, 531, 533, 531, 543, 527, - 535, 543, 531, 535, 541, 543, 539, 541, 535, 539, 535, 537, - 555, 114, 112, 557, 112, 110, 559, 555, 112, 559, 112, 557, - 553, 555, 559, 559, 551, 553, 561, 551, 559, 561, 549, 551, - 563, 549, 561, 571, 573, 549, 563, 571, 549, 565, 571, 563, - 569, 571, 565, 567, 569, 565, 583, 579, 581, 589, 579, 583, - 587, 589, 583, 587, 583, 585, 591, 579, 589, 595, 597, 599, - 601, 595, 599, 575, 591, 606, 579, 575, 577, 591, 575, 579, - 606, 591, 593, 606, 593, 595, 605, 606, 595, 605, 595, 601, - 605, 601, 603, 611, 579, 607, 611, 607, 609, 581, 579, 611, - 613, 581, 611, 620, 621, 615, 619, 620, 615, 617, 619, 615, - 622, 624, 605, 622, 605, 603, 627, 629, 631, 625, 627, 631, - 635, 624, 622, 636, 624, 635, 639, 633, 635, 622, 637, 639, - 639, 635, 622, 648, 643, 645, 648, 645, 647, 643, 648, 649, - 655, 643, 649, 655, 649, 651, 641, 643, 655, 653, 655, 651, - 674, 668, 670, 672, 674, 670, 676, 674, 672, 120, 676, 672, - 118, 676, 120, 684, 668, 678, 684, 678, 680, 682, 684, 680, - 686, 668, 684, 670, 668, 686, 694, 696, 698, 704, 692, 702, - 690, 704, 688, 690, 692, 704, 694, 700, 702, 694, 698, 700, - 702, 692, 694, 720, 721, 694, 720, 694, 692, 719, 720, 692, - 712, 719, 692, 708, 712, 692, 706, 708, 692, 710, 712, 708, - 716, 719, 712, 714, 716, 712, 718, 719, 716, 732, 734, 736, - 728, 730, 732, 742, 724, 736, 732, 736, 724, 728, 732, 724, - 736, 738, 740, 740, 742, 736, 726, 728, 724, 754, 748, 750, - 754, 750, 752, 722, 724, 754, 742, 744, 746, 742, 748, 724, - 746, 748, 742, 754, 724, 748, 722, 754, 756, 764, 766, 768, - 758, 760, 762, 764, 768, 770, 772, 758, 762, 774, 758, 772, - 770, 772, 762, 770, 762, 764, 768, 778, 780, 768, 780, 782, - 770, 768, 782, 782, 784, 776, 770, 782, 776, 780, 786, 788, - 784, 780, 788, 782, 780, 784, 790, 784, 788, 796, 776, 792, - 790, 792, 784, 776, 784, 792, 794, 796, 792, 830, 832, 834, - 838, 834, 836, 840, 842, 844, 820, 824, 826, 822, 824, 820, - 818, 820, 826, 816, 818, 826, 840, 814, 816, 814, 844, 812, - 826, 828, 830, 838, 826, 830, 838, 830, 834, 826, 838, 840, - 826, 840, 816, 810, 812, 848, 840, 844, 814, 846, 812, 844, - 848, 812, 846, 726, 724, 722, 726, 848, 728, 790, 786, 726, - 726, 780, 848, 780, 810, 848, 722, 790, 726, 788, 786, 790, - 810, 778, 808, 780, 726, 786, 780, 778, 810, 806, 808, 778, - 766, 802, 806, 804, 806, 802, 850, 790, 722, 802, 760, 800, - 806, 778, 766, 766, 778, 768, 792, 790, 850, 766, 760, 802, - 760, 766, 764, 762, 760, 764, 798, 800, 760, 758, 798, 760, - 868, 870, 852, 864, 866, 868, 864, 868, 856, 854, 868, 852, - 856, 868, 854, 862, 864, 856, 856, 858, 860, 862, 856, 860, - 882, 884, 886, 880, 882, 886, 888, 864, 862, 888, 880, 886, - 862, 880, 888, 862, 876, 880, 878, 880, 876, 872, 876, 862, - 874, 876, 872, 894, 896, 898, 892, 898, 890, 894, 898, 892, - 904, 906, 900, 902, 904, 900, 913, 908, 910, 913, 910, 912, - 916, 914, 915, 917, 914, 916, 906, 918, 920, 900, 906, 920, - 908, 924, 926, 910, 908, 926, 922, 924, 908, 936, 928, 930, - 936, 930, 932, 858, 936, 932, 932, 904, 858, 904, 932, 934, - 860, 904, 902, 860, 858, 904, 946, 948, 950, 952, 946, 950, - 960, 954, 956, 960, 956, 958, 940, 942, 944, 940, 944, 946, - 918, 938, 940, 920, 918, 940, 966, 920, 940, 940, 946, 952, - 940, 952, 954, 964, 966, 962, 940, 960, 966, 954, 960, 940, - 962, 966, 960, 972, 974, 968, 972, 968, 928, 970, 972, 928, - 970, 928, 936, 389, 974, 972, 391, 389, 972, 391, 972, 970, - 976, 391, 970, 978, 391, 976, 870, 976, 970, 870, 970, 852, - 866, 976, 870, 866, 870, 868, 988, 399, 397, 986, 988, 397, - 980, 985, 986, 397, 980, 986, 984, 980, 982, 985, 980, 984, - 993, 997, 999, 993, 999, 990, 995, 997, 993, 991, 993, 990, - 930, 968, 997, 930, 997, 995, 930, 995, 1000, 928, 968, 930, - 1006, 1030, 1002, 1004, 1006, 1002, 1006, 1028, 1030, 1024, 1028, 1006, - 1026, 1028, 1024, 1022, 1024, 1006, 1020, 1022, 1006, 1020, 1006, 1008, - 1010, 1020, 1008, 1018, 1020, 1010, 1018, 1014, 1016, 1010, 1012, 1018, - 1012, 1014, 1018, 1034, 1036, 1037, 1032, 1034, 1037, 1037, 1038, 1040, - 1032, 1037, 1040, 1046, 1042, 1044, 607, 1042, 1046, 609, 607, 1046, - 609, 1046, 1048, 1055, 1059, 1051, 1055, 1051, 1053, 1049, 1051, 1059, - 1057, 1059, 1055, 1004, 1002, 1061, 1004, 1061, 1049, 1059, 1004, 1049, - 1008, 1059, 1057, 1006, 1004, 1059, 1008, 1006, 1059, 1077, 1081, 1083, - 1079, 1081, 1077, 1067, 1077, 1083, 1063, 1067, 1083, 1071, 1077, 1067, - 1069, 1071, 1067, 1073, 1077, 1071, 1075, 1077, 1073, 1065, 1067, 1063, - 1083, 1081, 1085, 1083, 1085, 1087, 1089, 1085, 1081, 1095, 1097, 1099, - 1042, 1091, 1093, 1042, 1093, 1095, 1109, 1095, 1099, 1109, 1099, 1101, - 1042, 1095, 1109, 1044, 1042, 1109, 1087, 1101, 1103, 1105, 1109, 1101, - 1105, 1101, 1087, 1085, 1105, 1087, 1107, 1109, 1105, 1119, 1065, 1063, - 1119, 1063, 1111, 1113, 1119, 1111, 1117, 1119, 1113, 1115, 1117, 1113, - 1125, 1075, 1073, 1123, 1075, 1125, 1113, 1127, 1115, 1127, 1129, 1115, - 1113, 1121, 1127, 1123, 1125, 1127, 1121, 1123, 1127, 1055, 1123, 1121, - 1053, 1123, 1055, 1133, 1135, 1137, 1141, 1131, 1137, 1141, 1137, 1139, - 1133, 1137, 1131, 1149, 1151, 1153, 1145, 1147, 1149, 1149, 1153, 1155, - 1145, 1149, 1155, 1143, 1145, 1155, 1141, 1139, 1145, 1141, 1145, 1143, - 1159, 1161, 409, 407, 1159, 409, 1159, 407, 1157, 1133, 1161, 1159, - 1133, 1159, 1135, 1243, 1245, 1247, 1243, 1247, 1249, 1237, 1239, 1241, - 1235, 1237, 1241, 1249, 1251, 1253, 1253, 1243, 1249, 1255, 1243, 1253, - 1241, 1243, 1255, 1227, 1229, 1231, 1233, 1227, 1231, 1221, 1223, 1225, - 1219, 1221, 1225, 1267, 1273, 1279, 1271, 1267, 1269, 1273, 1267, 1271, - 1273, 1275, 1277, 1279, 1273, 1277, 1281, 1267, 1279, 1283, 1267, 1281, - 1213, 1215, 1217, 1211, 1213, 1217, 1285, 1287, 1289, 1207, 1209, 1219, - 1217, 1219, 1209, 1211, 1217, 1209, 1235, 1241, 1255, 1225, 1207, 1219, - 1225, 1227, 1255, 1255, 1207, 1225, 1207, 1283, 1205, 1233, 1235, 1255, - 1255, 1227, 1233, 1257, 1207, 1255, 1257, 1261, 1207, 1259, 1261, 1257, - 1261, 1265, 1207, 1263, 1265, 1261, 1267, 1207, 1265, 1283, 1207, 1267, - 1295, 1289, 1291, 1295, 1291, 1293, 1205, 1289, 1201, 1285, 1205, 1283, - 1289, 1205, 1285, 1199, 1201, 1289, 1203, 1205, 1201, 1289, 1179, 1199, - 1295, 1169, 1289, 1165, 1169, 1295, 1163, 1165, 1295, 1167, 1169, 1165, - 1169, 1171, 1289, 1171, 1177, 1289, 1177, 1171, 1173, 1175, 1177, 1173, - 1177, 1179, 1289, 1185, 1199, 1179, 1185, 1179, 1181, 1183, 1185, 1181, - 1187, 1199, 1185, 1187, 1197, 1199, 1191, 1187, 1189, 1191, 1197, 1187, - 1197, 1191, 1193, 1195, 1197, 1193, 1303, 1305, 1307, 1307, 1309, 1311, - 1313, 1307, 1311, 1315, 1297, 1299, 1301, 1315, 1299, 1303, 1313, 1315, - 1303, 1307, 1313, 1315, 1301, 1303, 1319, 1321, 1323, 1317, 1319, 1323, - 1326, 1327, 1329, 1331, 1326, 1329, 1325, 1326, 1331, 1339, 1335, 1337, - 1339, 1333, 1335, 1340, 1333, 1339, 1341, 1333, 1340, 1343, 1345, 1347, - 1327, 1343, 1347, 1351, 1329, 1327, 1347, 1349, 1351, 1351, 1327, 1347, - 1331, 1329, 1351, 1535, 1537, 1539, 1543, 1539, 1541, 1535, 1539, 1543, - 1533, 1535, 1543, 1533, 1547, 1531, 1543, 1545, 1533, 1545, 1547, 1533, - 1549, 1531, 1547, 1557, 1559, 1551, 1553, 1555, 1557, 1553, 1557, 1551, - 1564, 1566, 1568, 1570, 1564, 1568, 1562, 1564, 1570, 1572, 1561, 1562, - 1572, 1562, 1570, 1581, 1553, 1551, 1573, 1581, 1551, 1577, 1573, 1575, - 1579, 1581, 1573, 1577, 1579, 1573, 1566, 1579, 1577, 1568, 1566, 1577, - 1583, 1585, 1587, 1597, 1583, 1587, 1597, 1587, 1589, 1591, 1595, 1589, - 1597, 1589, 1595, 1593, 1595, 1591, 1559, 1583, 1597, 1551, 1559, 1597, - 1551, 1597, 1595, 1573, 1551, 1595, 1599, 1573, 1595, 1593, 1599, 1595, - 1575, 1573, 1599, 1624, 1626, 1628, 1620, 1624, 1628, 1605, 1601, 1603, - 1601, 1620, 1628, 1620, 1601, 1605, 1622, 1624, 1620, 1618, 1620, 1605, - 1605, 1616, 1618, 1607, 1609, 1605, 1609, 1616, 1605, 1612, 1616, 1609, - 1612, 1609, 1611, 1613, 1616, 1612, 1614, 1616, 1613, 1638, 1636, 1637, - 1634, 1636, 1638, 1630, 1639, 1640, 1639, 1634, 1638, 1632, 1639, 1630, - 1632, 1634, 1639, 1657, 1659, 1641, 1643, 1657, 1641, 1655, 1657, 1643, - 1651, 1645, 1647, 1649, 1651, 1647, 1653, 1645, 1651, 1643, 1645, 1653, - 1655, 1643, 1653, 1653, 1665, 1655, 1667, 1655, 1665, 209, 1667, 1665, - 211, 209, 1665, 1653, 1663, 1665, 1661, 1663, 1653, 221, 1663, 1661, - 219, 1663, 221, 1671, 1677, 1679, 1669, 1671, 1679, 1659, 1669, 1679, - 1641, 1659, 1679, 1671, 1673, 1677, 1675, 1677, 1673, 1649, 1647, 1677, - 1675, 1649, 1677, 1681, 1683, 1685, 1687, 1681, 1685, 1671, 1681, 1687, - 1695, 1689, 1691, 1693, 1695, 1691, 1673, 1689, 1695, 1687, 1689, 1673, - 1671, 1687, 1673, 1723, 1725, 1727, 1721, 1723, 1727, 1711, 1715, 1717, - 1711, 1717, 1719, 1713, 1715, 1711, 1721, 1727, 1729, 1703, 1705, 1707, - 1703, 1707, 1709, 1697, 1699, 1701, 1697, 1701, 1703, 1697, 1703, 1709, - 1697, 1709, 1711, 1729, 1697, 1711, 1719, 1729, 1711, 1729, 1719, 1721, - 1732, 1734, 1731, 1733, 1734, 1732, 1737, 1738, 1735, 1737, 1735, 1736, - 1742, 1743, 1745, 1741, 1739, 1740, 1742, 1745, 1739, 1741, 1742, 1739, - 1767, 1769, 1747, 1749, 1767, 1747, 1683, 1767, 1749, 1685, 1683, 1749, - 1685, 1749, 1751, 1757, 1751, 1753, 1755, 1757, 1753, 1757, 1691, 1685, - 1757, 1685, 1751, 1691, 1757, 1759, 1765, 1761, 1763, 1759, 1761, 1765, - 1693, 1759, 1765, 1691, 1759, 1693, 1769, 1777, 1779, 1775, 1769, 1779, - 1747, 1769, 1775, 1781, 1775, 1779, 1773, 1775, 1781, 1753, 1771, 1773, - 1773, 1791, 1753, 1755, 1753, 1791, 1783, 1773, 1781, 1783, 1791, 1773, - 1793, 1755, 1791, 1785, 1789, 1791, 1785, 1791, 1783, 1787, 1789, 1785, - 1763, 1789, 1787, 1761, 1789, 1763, 1799, 1801, 1795, 1797, 1799, 1795, - 1807, 1809, 1811, 1811, 1803, 1805, 1807, 1811, 1805, 1815, 1817, 1819, - 1813, 1815, 1819, 1813, 1819, 1820, 1795, 1821, 1815, 1795, 1815, 1813, - 1797, 1795, 1813, 227, 1829, 1831, 225, 1823, 227, 1823, 1829, 227, - 1825, 1829, 1823, 1827, 1829, 1825, 1835, 1837, 1699, 1803, 1835, 1699, - 1833, 1835, 1803, 1838, 1803, 1699, 1697, 1838, 1699, 1805, 1803, 1838, - 1852, 1854, 1856, 1846, 1848, 1850, 1858, 1850, 1852, 1858, 1852, 1856, - 1846, 1850, 1858, 1862, 1846, 1858, 1862, 1858, 1860, 1862, 1844, 1846, - 1842, 1862, 1840, 1842, 1844, 1862, 1868, 1870, 1864, 1866, 1868, 1864, - 1874, 1876, 1878, 1872, 1874, 1878, 1884, 1886, 1887, 1880, 1882, 1884, - 1880, 1884, 1887, 1864, 1876, 1874, 1888, 1866, 1864, 1888, 1864, 1874, - 1850, 267, 265, 1850, 1892, 267, 1850, 1890, 1892, 1850, 265, 1852, - 1848, 1890, 1850, 1894, 1842, 1840, 1894, 1840, 1898, 1896, 1842, 1894, - 1872, 1894, 1898, 1898, 1882, 1880, 1878, 1894, 1872, 1872, 1898, 1880, - 1902, 1904, 1906, 1908, 1902, 1906, 1900, 1902, 1908, 1910, 1900, 1908, - 1912, 1914, 1904, 1902, 1912, 1904, 1916, 1912, 1902, 1900, 1916, 1902, - 1918, 1922, 1914, 1920, 1922, 1918, 1914, 1926, 1918, 1912, 1926, 1914, - 1916, 1926, 1912, 1924, 1926, 1916, 1924, 1918, 1926, 1934, 1936, 1938, - 1918, 1932, 1938, 1918, 1938, 1920, 1932, 1918, 1924, 1934, 1938, 1932, - 1930, 1932, 1924, 1928, 1930, 1924, 1940, 1946, 1948, 1950, 1940, 1948, - 1942, 1946, 1940, 1944, 1946, 1942, 1958, 1960, 1934, 1958, 1934, 1932, - 1930, 1952, 1958, 1956, 1958, 1952, 1954, 1956, 1952, 1946, 1928, 1948, - 1932, 1930, 1958, 1928, 1952, 1930, 1944, 1928, 1946, 1928, 1944, 1952, - 283, 1962, 1963, 283, 1963, 1965, 283, 1965, 1967, 285, 283, 1967, - 1973, 1979, 281, 1977, 1979, 1973, 1975, 1977, 1973, 289, 1973, 281, - 1971, 289, 1969, 1971, 1973, 289, 1981, 1640, 1980, 1630, 1640, 1981, - 1531, 1630, 1981, 1531, 1981, 1533, 1632, 1630, 1531, 1982, 1983, 1984, - 1982, 511, 509, 625, 1982, 1984, 625, 1984, 1986, 1982, 631, 511, - 625, 631, 1982, 1990, 1992, 1994, 1988, 491, 489, 1990, 1994, 491, - 1988, 1990, 491, 2008, 2010, 2012, 2008, 2012, 2014, 2004, 2006, 2008, - 2000, 2002, 2004, 2004, 2018, 1996, 2014, 2004, 2008, 2000, 2004, 1996, - 1998, 2000, 1996, 2014, 2016, 2018, 2018, 2004, 2014, 1996, 2018, 2020, - 2104, 2098, 2100, 2102, 2104, 2100, 2094, 2098, 2104, 2096, 2098, 2094, - 2094, 2104, 2106, 2106, 2092, 2094, 2092, 2106, 2107, 2084, 2080, 2082, - 2086, 2078, 2080, 2086, 2072, 2078, 2086, 2080, 2084, 2078, 2074, 2076, - 2088, 2072, 2086, 2072, 2074, 2078, 2108, 2092, 2107, 2058, 2062, 2066, - 2062, 2058, 2060, 2058, 2052, 2056, 2064, 2066, 2062, 2070, 2072, 2088, - 2070, 2088, 2090, 2066, 2048, 2050, 2052, 2054, 2056, 2066, 2052, 2058, - 2066, 2050, 2052, 2108, 2110, 2090, 2108, 2090, 2092, 2042, 2044, 2046, - 2040, 2036, 2038, 2042, 2034, 2036, 2112, 2068, 2070, 2110, 2112, 2070, - 2110, 2070, 2090, 2028, 2032, 2034, 2042, 2036, 2040, 2034, 2042, 2046, - 2026, 2028, 2034, 2030, 2032, 2028, 2046, 2026, 2034, 2026, 2046, 2114, - 2022, 2026, 2114, 2024, 2026, 2022, 2048, 2066, 2068, 2048, 2068, 2112, - 2112, 2046, 2048, 2112, 2114, 2046, 2116, 2022, 2114, 2120, 311, 317, - 2120, 317, 2118, 2125, 2120, 2118, 2127, 2120, 2125, 882, 982, 2130, - 878, 882, 880, 882, 984, 982, 878, 984, 882, 2132, 984, 878, - 874, 878, 876, 2132, 878, 874, 2136, 2133, 2135, 2137, 2133, 2136, - 515, 2133, 2137, 517, 515, 2137, 2145, 547, 545, 2139, 545, 543, - 2145, 545, 2139, 2143, 2141, 2142, 2145, 2139, 2141, 2143, 2145, 2141, - 1986, 2146, 2148, 1984, 2146, 1986, 641, 1986, 2148, 641, 2148, 643, - 621, 2151, 2145, 621, 2145, 2143, 615, 621, 2143, 2149, 615, 2143, - 2150, 615, 2149, 2162, 2164, 2160, 2162, 2160, 2161, 2163, 2157, 2164, - 2163, 2164, 2162, 2167, 2175, 2177, 2178, 2167, 2177, 2165, 2167, 2178, - 2165, 2178, 2179, 2169, 2175, 2167, 2169, 2173, 2175, 2171, 2173, 2169, - 2172, 2173, 2171, 2184, 2185, 2186, 2186, 2187, 2188, 1579, 1564, 2188, - 1579, 2188, 1581, 1564, 1579, 1566, 1562, 2188, 1564, 1562, 2182, 2184, - 2183, 2184, 2182, 2186, 2188, 1562, 1562, 2184, 2186, 2180, 2182, 1562, - 2181, 2182, 2180, 1561, 2180, 1562, 2191, 2192, 2194, 2191, 2194, 2189, - 2190, 2191, 2189, 2224, 2226, 2228, 2208, 2210, 2212, 2214, 2208, 2212, - 2232, 2228, 2230, 2206, 2207, 2208, 2220, 2222, 2232, 2228, 2222, 2224, - 2232, 2222, 2228, 2232, 2218, 2220, 2234, 2218, 2232, 2216, 2218, 2234, - 2214, 2216, 2234, 2234, 2206, 2214, 2214, 2206, 2208, 2206, 2234, 2236, - 2205, 2206, 2236, 2244, 2240, 2242, 2244, 2256, 2238, 2244, 2238, 2240, - 2246, 2256, 2244, 2248, 2256, 2246, 2254, 2256, 2248, 2250, 2254, 2248, - 2252, 2254, 2250, 2262, 2259, 2260, 2258, 2259, 2262, 2264, 2258, 2262, - 2281, 2267, 2279, 2266, 2267, 2281, 2268, 2269, 2271, 2267, 2268, 2271, - 2273, 2277, 2271, 2275, 2277, 2273, 2277, 2267, 2271, 2279, 2267, 2277, - 2287, 2289, 2291, 2307, 2283, 2285, 2307, 2285, 2287, 2305, 2307, 2287, - 2303, 2305, 2287, 2287, 2291, 2293, 2301, 2303, 2287, 2293, 2299, 2301, - 2287, 2293, 2301, 2295, 2299, 2293, 2299, 2295, 2297, 2322, 2324, 2326, - 2317, 2326, 2328, 2317, 2328, 2330, 2322, 2326, 2317, 2319, 2322, 2317, - 2330, 2309, 2317, 2320, 2322, 2319, 2321, 2322, 2320, 2332, 2309, 2330, - 2315, 2317, 2309, 2311, 2315, 2309, 2313, 2315, 2311, 2368, 2334, 2336, - 2364, 2366, 2336, 2342, 2338, 2340, 2342, 2344, 2338, 2344, 2346, 2338, - 2336, 2338, 2364, 2336, 2366, 2368, 2338, 2346, 2364, 2346, 2362, 2364, - 2348, 2362, 2346, 2360, 2362, 2348, 2350, 2358, 2360, 2348, 2350, 2360, - 2352, 2358, 2350, 2356, 2358, 2352, 2354, 2356, 2352, 2372, 2384, 2370, - 2374, 2376, 2372, 2376, 2378, 2372, 2378, 2380, 2372, 2380, 2382, 2372, - 2382, 2384, 2372, 2386, 2370, 2384, 2338, 2370, 2386, 2336, 2370, 2338 - ] - }, - { - "id": "shape1_part3", - "type": "TRIANGLES", - "indices": [ - 122, 123, 124, 123, 125, 124, 124, 125, 126, 125, 127, 126, - 126, 127, 128, 127, 129, 128, 128, 129, 130, 129, 131, 130, - 130, 131, 132, 131, 133, 132, 132, 133, 134, 133, 135, 134, - 134, 135, 136, 135, 137, 136, 136, 137, 138, 137, 139, 138, - 138, 139, 140, 139, 141, 140, 140, 141, 122, 141, 123, 122, - 122, 122, 124, 122, 124, 124, 124, 124, 126, 124, 126, 126, - 126, 126, 128, 126, 128, 128, 128, 128, 130, 128, 130, 130, - 130, 130, 132, 130, 132, 132, 132, 132, 134, 132, 134, 134, - 134, 134, 136, 134, 136, 136, 136, 136, 138, 136, 138, 138, - 138, 138, 140, 138, 140, 140, 140, 140, 122, 140, 122, 122, - 325, 319, 321, 323, 325, 321, 329, 331, 333, 329, 333, 335, - 337, 329, 335, 327, 329, 337, 343, 339, 340, 343, 340, 341, - 657, 658, 659, 658, 514, 659, 659, 514, 660, 514, 512, 660, - 660, 512, 661, 512, 632, 661, 661, 632, 662, 632, 630, 662, - 662, 630, 663, 630, 628, 663, 663, 628, 664, 628, 665, 664, - 664, 665, 666, 665, 667, 666, 666, 667, 657, 667, 658, 657, - 657, 657, 659, 657, 659, 659, 659, 659, 660, 659, 660, 660, - 660, 660, 661, 660, 661, 661, 661, 661, 662, 661, 662, 662, - 662, 662, 663, 662, 663, 663, 663, 663, 664, 663, 664, 664, - 664, 664, 666, 664, 666, 666, 666, 666, 657, 666, 657, 657, - 657, 659, 660, 661, 657, 660, 662, 657, 661, 666, 657, 662, - 664, 666, 662, 664, 662, 663, 1367, 1363, 1365, 1371, 1367, 1369, - 1367, 1361, 1363, 1371, 1361, 1367, 1357, 1359, 1361, 1371, 1357, 1361, - 1355, 1357, 1371, 1381, 1353, 1355, 1379, 1355, 1371, 1379, 1371, 1373, - 1381, 1355, 1379, 1377, 1379, 1373, 1375, 1377, 1373, 1389, 1385, 1387, - 1383, 1385, 1389, 1403, 1395, 1397, 1395, 1391, 1393, 1405, 1395, 1403, - 1405, 1391, 1395, 1403, 1397, 1399, 1401, 1403, 1399, 1413, 1407, 1409, - 1411, 1413, 1409, 1415, 1417, 1419, 1421, 1423, 1419, 1419, 1423, 1425, - 1427, 1439, 1425, 1439, 1419, 1425, 1415, 1419, 1439, 1441, 1447, 1415, - 1441, 1415, 1439, 1437, 1439, 1427, 1443, 1445, 1447, 1443, 1447, 1441, - 1431, 1427, 1429, 1433, 1437, 1427, 1431, 1433, 1427, 1435, 1437, 1433, - 1453, 1455, 1456, 1451, 1453, 1456, 1451, 1456, 1449, 1502, 1457, 1459, - 1500, 1459, 1461, 1459, 1500, 1502, 1498, 1461, 1463, 1498, 1500, 1461, - 1499, 1500, 1498, 1465, 1497, 1498, 1465, 1498, 1463, 1497, 1465, 1467, - 1471, 1497, 1467, 1471, 1467, 1469, 1495, 1497, 1471, 1473, 1492, 1495, - 1473, 1495, 1471, 1492, 1473, 1475, 1493, 1495, 1492, 1479, 1475, 1477, - 1481, 1492, 1475, 1481, 1475, 1479, 1481, 1483, 1492, 1489, 1483, 1485, - 1489, 1485, 1487, 1483, 1491, 1492, 1489, 1491, 1483, 1519, 1529, 1504, - 1520, 1529, 1519, 1527, 1529, 1520, 1525, 1527, 1520, 1520, 1522, 1525, - 1521, 1522, 1520, 1505, 1518, 1504, 1519, 1504, 1518, 1524, 1525, 1522, - 1524, 1522, 1523, 1516, 1518, 1505, 1517, 1518, 1516, 1516, 1505, 1506, - 1513, 1511, 1512, 1515, 1516, 1506, 1508, 1510, 1511, 1508, 1511, 1513, - 1514, 1508, 1513, 1507, 1508, 1514, 1507, 1514, 1515, 1507, 1515, 1506 - ] - }, - { - "id": "shape1_part4", - "type": "TRIANGLES", - "indices": [ - 128, 130, 132, 136, 128, 132, 136, 132, 134, 126, 128, 136, - 138, 140, 124, 126, 138, 124, 122, 124, 140, 136, 138, 126 - ] - }, - { - "id": "shape1_part5", - "type": "TRIANGLES", - "indices": [ - 319, 320, 321, 320, 322, 321, 321, 322, 323, 322, 324, 323, - 323, 324, 325, 324, 326, 325, 325, 326, 319, 326, 320, 319, - 319, 319, 321, 319, 321, 321, 321, 321, 323, 321, 323, 323, - 323, 323, 325, 323, 325, 325, 325, 325, 319, 325, 319, 319, - 324, 322, 320, 326, 324, 320, 327, 328, 329, 328, 330, 329, - 329, 330, 331, 330, 332, 331, 331, 332, 333, 332, 334, 333, - 333, 334, 335, 334, 336, 335, 335, 336, 337, 336, 338, 337, - 337, 338, 327, 338, 328, 327, 327, 327, 329, 327, 329, 329, - 329, 329, 331, 329, 331, 331, 331, 331, 333, 331, 333, 333, - 333, 333, 335, 333, 335, 335, 335, 335, 337, 335, 337, 337, - 337, 337, 327, 337, 327, 327, 339, 328, 340, 328, 338, 340, - 340, 338, 341, 338, 342, 341, 341, 342, 343, 342, 344, 343, - 343, 344, 339, 344, 328, 339, 339, 339, 340, 339, 340, 340, - 340, 340, 341, 340, 341, 341, 341, 341, 343, 341, 343, 343, - 343, 343, 339, 343, 339, 339, 1353, 1354, 1355, 1354, 1356, 1355, - 1355, 1356, 1357, 1356, 1358, 1357, 1357, 1358, 1359, 1358, 1360, 1359, - 1359, 1360, 1361, 1360, 1362, 1361, 1361, 1362, 1363, 1362, 1364, 1363, - 1363, 1364, 1365, 1364, 1366, 1365, 1365, 1366, 1367, 1366, 1368, 1367, - 1367, 1368, 1369, 1368, 1370, 1369, 1369, 1370, 1371, 1370, 1372, 1371, - 1371, 1372, 1373, 1372, 1374, 1373, 1373, 1374, 1375, 1374, 1376, 1375, - 1375, 1376, 1377, 1376, 1378, 1377, 1377, 1378, 1379, 1378, 1380, 1379, - 1379, 1380, 1381, 1380, 1382, 1381, 1381, 1382, 1353, 1382, 1354, 1353, - 1353, 1353, 1355, 1353, 1355, 1355, 1355, 1355, 1357, 1355, 1357, 1357, - 1357, 1357, 1359, 1357, 1359, 1359, 1359, 1359, 1361, 1359, 1361, 1361, - 1361, 1361, 1363, 1361, 1363, 1363, 1363, 1363, 1365, 1363, 1365, 1365, - 1365, 1365, 1367, 1365, 1367, 1367, 1367, 1367, 1369, 1367, 1369, 1369, - 1369, 1369, 1371, 1369, 1371, 1371, 1371, 1371, 1373, 1371, 1373, 1373, - 1373, 1373, 1375, 1373, 1375, 1375, 1375, 1375, 1377, 1375, 1377, 1377, - 1377, 1377, 1379, 1377, 1379, 1379, 1379, 1379, 1381, 1379, 1381, 1381, - 1381, 1381, 1353, 1381, 1353, 1353, 1383, 1384, 1385, 1384, 1386, 1385, - 1385, 1386, 1387, 1386, 1388, 1387, 1387, 1388, 1389, 1388, 1390, 1389, - 1389, 1390, 1383, 1390, 1384, 1383, 1383, 1383, 1385, 1383, 1385, 1385, - 1385, 1385, 1387, 1385, 1387, 1387, 1387, 1387, 1389, 1387, 1389, 1389, - 1389, 1389, 1383, 1389, 1383, 1383, 1391, 1392, 1393, 1392, 1394, 1393, - 1393, 1394, 1395, 1394, 1396, 1395, 1395, 1396, 1397, 1396, 1398, 1397, - 1397, 1398, 1399, 1398, 1400, 1399, 1399, 1400, 1401, 1400, 1402, 1401, - 1401, 1402, 1403, 1402, 1404, 1403, 1403, 1404, 1405, 1404, 1406, 1405, - 1405, 1406, 1391, 1406, 1392, 1391, 1391, 1391, 1393, 1391, 1393, 1393, - 1393, 1393, 1395, 1393, 1395, 1395, 1395, 1395, 1397, 1395, 1397, 1397, - 1397, 1397, 1399, 1397, 1399, 1399, 1399, 1399, 1401, 1399, 1401, 1401, - 1401, 1401, 1403, 1401, 1403, 1403, 1403, 1403, 1405, 1403, 1405, 1405, - 1405, 1405, 1391, 1405, 1391, 1391, 1407, 1408, 1409, 1408, 1410, 1409, - 1409, 1410, 1411, 1410, 1412, 1411, 1411, 1412, 1413, 1412, 1414, 1413, - 1413, 1414, 1407, 1414, 1408, 1407, 1407, 1407, 1409, 1407, 1409, 1409, - 1409, 1409, 1411, 1409, 1411, 1411, 1411, 1411, 1413, 1411, 1413, 1413, - 1413, 1413, 1407, 1413, 1407, 1407, 1415, 1416, 1417, 1416, 1418, 1417, - 1417, 1418, 1419, 1418, 1420, 1419, 1419, 1420, 1421, 1420, 1422, 1421, - 1421, 1422, 1423, 1422, 1424, 1423, 1423, 1424, 1425, 1424, 1426, 1425, - 1425, 1426, 1427, 1426, 1428, 1427, 1427, 1428, 1429, 1428, 1430, 1429, - 1429, 1430, 1431, 1430, 1432, 1431, 1431, 1432, 1433, 1432, 1434, 1433, - 1433, 1434, 1435, 1434, 1436, 1435, 1435, 1436, 1437, 1436, 1438, 1437, - 1437, 1438, 1439, 1438, 1440, 1439, 1439, 1440, 1441, 1440, 1442, 1441, - 1441, 1442, 1443, 1442, 1444, 1443, 1443, 1444, 1445, 1444, 1446, 1445, - 1445, 1446, 1447, 1446, 1448, 1447, 1447, 1448, 1415, 1448, 1416, 1415, - 1415, 1415, 1417, 1415, 1417, 1417, 1417, 1417, 1419, 1417, 1419, 1419, - 1419, 1419, 1421, 1419, 1421, 1421, 1421, 1421, 1423, 1421, 1423, 1423, - 1423, 1423, 1425, 1423, 1425, 1425, 1425, 1425, 1427, 1425, 1427, 1427, - 1427, 1427, 1429, 1427, 1429, 1429, 1429, 1429, 1431, 1429, 1431, 1431, - 1431, 1431, 1433, 1431, 1433, 1433, 1433, 1433, 1435, 1433, 1435, 1435, - 1435, 1435, 1437, 1435, 1437, 1437, 1437, 1437, 1439, 1437, 1439, 1439, - 1439, 1439, 1441, 1439, 1441, 1441, 1441, 1441, 1443, 1441, 1443, 1443, - 1443, 1443, 1445, 1443, 1445, 1445, 1445, 1445, 1447, 1445, 1447, 1447, - 1447, 1447, 1415, 1447, 1415, 1415, 1449, 1450, 1451, 1450, 1452, 1451, - 1451, 1452, 1453, 1452, 1454, 1453, 1453, 1454, 1455, 1454, 1367, 1455, - 1455, 1367, 1456, 1367, 1369, 1456, 1456, 1369, 1449, 1369, 1450, 1449, - 1449, 1449, 1451, 1449, 1451, 1451, 1451, 1451, 1453, 1451, 1453, 1453, - 1453, 1453, 1455, 1453, 1455, 1455, 1455, 1455, 1456, 1455, 1456, 1456, - 1456, 1456, 1449, 1456, 1449, 1449, 1450, 1369, 1367, 1450, 1367, 1454, - 1450, 1454, 1452, 1457, 1458, 1459, 1458, 1460, 1459, 1459, 1460, 1461, - 1460, 1462, 1461, 1461, 1462, 1463, 1462, 1464, 1463, 1463, 1464, 1465, - 1464, 1466, 1465, 1465, 1466, 1467, 1466, 1468, 1467, 1467, 1468, 1469, - 1468, 1470, 1469, 1469, 1470, 1471, 1470, 1472, 1471, 1471, 1472, 1473, - 1472, 1474, 1473, 1473, 1474, 1475, 1474, 1476, 1475, 1475, 1476, 1477, - 1476, 1478, 1477, 1477, 1478, 1479, 1478, 1480, 1479, 1479, 1480, 1481, - 1480, 1482, 1481, 1481, 1482, 1483, 1482, 1484, 1483, 1483, 1484, 1485, - 1484, 1486, 1485, 1485, 1486, 1487, 1486, 1488, 1487, 1487, 1488, 1489, - 1488, 1490, 1489, 1489, 1490, 1491, 1490, 1376, 1491, 1491, 1376, 1492, - 1376, 1374, 1492, 1492, 1374, 1493, 1374, 1494, 1493, 1493, 1494, 1495, - 1494, 1496, 1495, 1495, 1496, 1497, 1496, 1370, 1497, 1497, 1370, 1498, - 1370, 1368, 1498, 1498, 1368, 1499, 1368, 1366, 1499, 1499, 1366, 1500, - 1366, 1501, 1500, 1500, 1501, 1502, 1501, 1503, 1502, 1502, 1503, 1457, - 1503, 1458, 1457, 1457, 1457, 1459, 1457, 1459, 1459, 1459, 1459, 1461, - 1459, 1461, 1461, 1461, 1461, 1463, 1461, 1463, 1463, 1463, 1463, 1465, - 1463, 1465, 1465, 1465, 1465, 1467, 1465, 1467, 1467, 1467, 1467, 1469, - 1467, 1469, 1469, 1469, 1469, 1471, 1469, 1471, 1471, 1471, 1471, 1473, - 1471, 1473, 1473, 1473, 1473, 1475, 1473, 1475, 1475, 1475, 1475, 1477, - 1475, 1477, 1477, 1477, 1477, 1479, 1477, 1479, 1479, 1479, 1479, 1481, - 1479, 1481, 1481, 1481, 1481, 1483, 1481, 1483, 1483, 1483, 1483, 1485, - 1483, 1485, 1485, 1485, 1485, 1487, 1485, 1487, 1487, 1487, 1487, 1489, - 1487, 1489, 1489, 1489, 1489, 1491, 1489, 1491, 1491, 1491, 1491, 1492, - 1491, 1492, 1492, 1492, 1492, 1493, 1492, 1493, 1493, 1493, 1493, 1495, - 1493, 1495, 1495, 1495, 1495, 1497, 1495, 1497, 1497, 1497, 1497, 1498, - 1497, 1498, 1498, 1498, 1498, 1499, 1498, 1499, 1499, 1499, 1499, 1500, - 1499, 1500, 1500, 1500, 1500, 1502, 1500, 1502, 1502, 1502, 1502, 1457, - 1502, 1457, 1457, 1504, 1360, 1505, 1360, 1358, 1505, 1505, 1358, 1506, - 1358, 1356, 1506, 1506, 1356, 1507, 1356, 1354, 1507, 1507, 1354, 1508, - 1354, 1509, 1508, 1508, 1509, 1510, 1509, 1442, 1510, 1510, 1442, 1511, - 1442, 1440, 1511, 1511, 1440, 1512, 1440, 1438, 1512, 1512, 1438, 1513, - 1438, 1436, 1513, 1513, 1436, 1514, 1436, 1434, 1514, 1514, 1434, 1515, - 1434, 1432, 1515, 1515, 1432, 1516, 1432, 1430, 1516, 1516, 1430, 1517, - 1430, 1428, 1517, 1517, 1428, 1518, 1428, 1426, 1518, 1518, 1426, 1519, - 1426, 1424, 1519, 1519, 1424, 1520, 1424, 1422, 1520, 1520, 1422, 1521, - 1422, 1420, 1521, 1521, 1420, 1522, 1420, 1418, 1522, 1522, 1418, 1523, - 1418, 1416, 1523, 1523, 1416, 1524, 1416, 1448, 1524, 1524, 1448, 1525, - 1448, 1526, 1525, 1525, 1526, 1527, 1526, 1528, 1527, 1527, 1528, 1529, - 1528, 1530, 1529, 1529, 1530, 1504, 1530, 1360, 1504, 1504, 1504, 1505, - 1504, 1505, 1505, 1505, 1505, 1506, 1505, 1506, 1506, 1506, 1506, 1507, - 1506, 1507, 1507, 1507, 1507, 1508, 1507, 1508, 1508, 1508, 1508, 1510, - 1508, 1510, 1510, 1510, 1510, 1511, 1510, 1511, 1511, 1511, 1511, 1512, - 1511, 1512, 1512, 1512, 1512, 1513, 1512, 1513, 1513, 1513, 1513, 1514, - 1513, 1514, 1514, 1514, 1514, 1515, 1514, 1515, 1515, 1515, 1515, 1516, - 1515, 1516, 1516, 1516, 1516, 1517, 1516, 1517, 1517, 1517, 1517, 1518, - 1517, 1518, 1518, 1518, 1518, 1519, 1518, 1519, 1519, 1519, 1519, 1520, - 1519, 1520, 1520, 1520, 1520, 1521, 1520, 1521, 1521, 1521, 1521, 1522, - 1521, 1522, 1522, 1522, 1522, 1523, 1522, 1523, 1523, 1523, 1523, 1524, - 1523, 1524, 1524, 1524, 1524, 1525, 1524, 1525, 1525, 1525, 1525, 1527, - 1525, 1527, 1527, 1527, 1527, 1529, 1527, 1529, 1529, 1529, 1529, 1504, - 1529, 1504, 1504 - ] - }, - { - "id": "shape1_part6", - "type": "TRIANGLES", - "indices": [ - 2195, 2196, 2197, 2196, 2198, 2197, 2197, 2198, 2199, 2198, 2200, 2199, - 2199, 2200, 2201, 2200, 2202, 2201, 2201, 2202, 1591, 2202, 1592, 1591, - 1591, 1592, 1589, 1592, 1590, 1589, 1589, 1590, 1587, 1590, 1588, 1587, - 1587, 1588, 1585, 1588, 1586, 1585, 1585, 1586, 2203, 1586, 2204, 2203, - 2203, 2204, 2195, 2204, 2196, 2195, 2195, 2195, 2197, 2195, 2197, 2197, - 2197, 2197, 2199, 2197, 2199, 2199, 2199, 2199, 2201, 2199, 2201, 2201, - 2201, 2201, 1591, 2201, 1591, 1591, 1591, 1591, 1589, 1591, 1589, 1589, - 1589, 1589, 1587, 1589, 1587, 1587, 1587, 1587, 1585, 1587, 1585, 1585, - 1585, 1585, 2203, 1585, 2203, 2203, 2203, 2203, 2195, 2203, 2195, 2195 - ] - }, - { - "id": "shape1_part7", - "type": "TRIANGLES", - "indices": [ - 1585, 2203, 2195, 1587, 1585, 2195, 1589, 1587, 2195, 2201, 1589, 2195, - 2197, 2201, 2195, 2199, 2201, 2197, 1591, 1589, 2201 - ] - }, - { - "id": "shape1_part8", - "type": "TRIANGLES", - "indices": [ - 2388, 2389, 2390, 2389, 2391, 2390, 2390, 2391, 2392, 2391, 2393, 2392, - 2392, 2393, 2394, 2393, 2395, 2394, 2394, 2395, 2396, 2395, 2397, 2396, - 2396, 2397, 2398, 2397, 2399, 2398, 2398, 2399, 2400, 2399, 2401, 2400, - 2400, 2401, 2388, 2401, 2389, 2388, 2402, 2388, 2403, 2388, 2390, 2403, - 2403, 2390, 2404, 2390, 2392, 2404, 2404, 2392, 2394, 2392, 2394, 2394, - 2394, 2394, 2405, 2394, 2396, 2405, 2405, 2396, 2406, 2396, 2398, 2406, - 2406, 2398, 2407, 2398, 2400, 2407, 2407, 2400, 2402, 2400, 2388, 2402, - 2395, 2393, 2389, 2399, 2395, 2389, 2401, 2399, 2389, 2408, 2409, 2394, - 2409, 2395, 2394, 2394, 2395, 2392, 2395, 2393, 2392, 2392, 2393, 2388, - 2393, 2389, 2388, 2388, 2389, 2400, 2389, 2401, 2400, 2400, 2401, 2410, - 2401, 2411, 2410, 2410, 2411, 2412, 2411, 2413, 2412, 2412, 2413, 2414, - 2413, 2415, 2414, 2414, 2415, 2416, 2415, 2417, 2416, 2416, 2417, 2418, - 2417, 2419, 2418, 2418, 2419, 2420, 2419, 2421, 2420, 2420, 2421, 2422, - 2421, 2423, 2422, 2422, 2423, 2424, 2423, 2425, 2424, 2424, 2425, 2426, - 2425, 2427, 2426, 2426, 2427, 2428, 2427, 2429, 2428, 2428, 2429, 2430, - 2429, 2431, 2430, 2430, 2431, 2432, 2431, 2433, 2432, 2432, 2433, 2434, - 2433, 2435, 2434, 2434, 2435, 2436, 2435, 2437, 2436, 2436, 2437, 2438, - 2437, 2439, 2438, 2438, 2439, 2440, 2439, 2441, 2440, 2440, 2441, 2442, - 2441, 2443, 2442, 2442, 2443, 2444, 2443, 2445, 2444, 2444, 2445, 2446, - 2445, 2447, 2446, 2446, 2447, 2448, 2447, 2449, 2448, 2448, 2449, 2450, - 2449, 2451, 2450, 2450, 2451, 2452, 2451, 2453, 2452, 2452, 2453, 2454, - 2453, 2455, 2454, 2454, 2455, 2456, 2455, 2457, 2456, 2456, 2457, 2458, - 2457, 2459, 2458, 2458, 2459, 2460, 2459, 2461, 2460, 2460, 2461, 2462, - 2461, 2463, 2462, 2462, 2463, 2464, 2463, 2465, 2464, 2464, 2465, 2466, - 2465, 2467, 2466, 2466, 2467, 2468, 2467, 2469, 2468, 2468, 2469, 2470, - 2469, 2471, 2470, 2470, 2471, 2472, 2471, 2473, 2472, 2472, 2473, 2474, - 2473, 2475, 2474, 2474, 2475, 2476, 2475, 2477, 2476, 2476, 2477, 2478, - 2477, 2479, 2478, 2478, 2479, 2480, 2479, 2481, 2480, 2480, 2481, 2482, - 2481, 2483, 2482, 2482, 2483, 2484, 2483, 2485, 2484, 2484, 2485, 2486, - 2485, 2487, 2486, 2486, 2487, 2488, 2487, 2489, 2488, 2488, 2489, 2490, - 2489, 2491, 2490, 2490, 2491, 2492, 2491, 2493, 2492, 2492, 2493, 2494, - 2493, 2495, 2494, 2494, 2495, 2496, 2495, 2497, 2496, 2496, 2497, 2498, - 2497, 2499, 2498, 2498, 2499, 2500, 2499, 2501, 2500, 2500, 2501, 2408, - 2501, 2409, 2408, 2408, 2408, 2394, 2408, 2394, 2394, 2394, 2394, 2392, - 2394, 2392, 2392, 2392, 2392, 2388, 2392, 2388, 2388, 2388, 2388, 2400, - 2388, 2400, 2400, 2400, 2400, 2410, 2400, 2410, 2410, 2410, 2410, 2412, - 2410, 2412, 2412, 2412, 2412, 2414, 2412, 2414, 2414, 2414, 2414, 2416, - 2414, 2416, 2416, 2416, 2416, 2418, 2416, 2418, 2418, 2418, 2418, 2420, - 2418, 2420, 2420, 2420, 2420, 2422, 2420, 2422, 2422, 2422, 2422, 2424, - 2422, 2424, 2424, 2424, 2424, 2426, 2424, 2426, 2426, 2426, 2426, 2428, - 2426, 2428, 2428, 2428, 2428, 2430, 2428, 2430, 2430, 2430, 2430, 2432, - 2430, 2432, 2432, 2432, 2432, 2434, 2432, 2434, 2434, 2434, 2434, 2436, - 2434, 2436, 2436, 2436, 2436, 2438, 2436, 2438, 2438, 2438, 2438, 2440, - 2438, 2440, 2440, 2440, 2440, 2442, 2440, 2442, 2442, 2442, 2442, 2444, - 2442, 2444, 2444, 2444, 2444, 2446, 2444, 2446, 2446, 2446, 2446, 2448, - 2446, 2448, 2448, 2448, 2448, 2450, 2448, 2450, 2450, 2450, 2450, 2452, - 2450, 2452, 2452, 2452, 2452, 2454, 2452, 2454, 2454, 2454, 2454, 2456, - 2454, 2456, 2456, 2456, 2456, 2458, 2456, 2458, 2458, 2458, 2458, 2460, - 2458, 2460, 2460, 2460, 2460, 2462, 2460, 2462, 2462, 2462, 2462, 2464, - 2462, 2464, 2464, 2464, 2464, 2466, 2464, 2466, 2466, 2466, 2466, 2468, - 2466, 2468, 2468, 2468, 2468, 2470, 2468, 2470, 2470, 2470, 2470, 2472, - 2470, 2472, 2472, 2472, 2472, 2474, 2472, 2474, 2474, 2474, 2474, 2476, - 2474, 2476, 2476, 2476, 2476, 2478, 2476, 2478, 2478, 2478, 2478, 2480, - 2478, 2480, 2480, 2480, 2480, 2482, 2480, 2482, 2482, 2482, 2482, 2484, - 2482, 2484, 2484, 2484, 2484, 2486, 2484, 2486, 2486, 2486, 2486, 2488, - 2486, 2488, 2488, 2488, 2488, 2490, 2488, 2490, 2490, 2490, 2490, 2492, - 2490, 2492, 2492, 2492, 2492, 2494, 2492, 2494, 2494, 2494, 2494, 2496, - 2494, 2496, 2496, 2496, 2496, 2498, 2496, 2498, 2498, 2498, 2498, 2500, - 2498, 2500, 2500, 2500, 2500, 2408, 2500, 2408, 2408, 2501, 2499, 2497, - 2497, 2495, 2493, 2493, 2491, 2489, 2489, 2487, 2485, 2485, 2483, 2481, - 2485, 2481, 2479, 2479, 2477, 2475, 2475, 2473, 2471, 2475, 2471, 2469, - 2479, 2475, 2469, 2485, 2479, 2469, 2489, 2485, 2469, 2467, 2465, 2463, - 2463, 2461, 2459, 2467, 2463, 2459, 2459, 2457, 2455, 2467, 2459, 2455, - 2467, 2455, 2453, 2467, 2453, 2451, 2467, 2451, 2449, 2469, 2467, 2449, - 2489, 2469, 2449, 2493, 2489, 2449, 2497, 2493, 2449, 2501, 2497, 2449, - 2409, 2501, 2449, 2449, 2447, 2445, 2449, 2445, 2443, 2449, 2443, 2441, - 2449, 2441, 2439, 2449, 2439, 2437, 2449, 2437, 2435, 2435, 2433, 2431, - 2449, 2435, 2431, 2449, 2431, 2429, 2449, 2429, 2427, 2449, 2427, 2425, - 2423, 2421, 2419, 2425, 2423, 2419, 2425, 2419, 2417, 2425, 2417, 2415, - 2425, 2415, 2413, 2425, 2413, 2411, 2425, 2411, 2401, 2425, 2401, 2389, - 2449, 2425, 2389, 2449, 2389, 2393, 2409, 2449, 2393, 2409, 2393, 2395 - ] - }, - { - "id": "shape1_part9", - "type": "TRIANGLES", - "indices": [ - 2406, 2407, 2402, 2403, 2406, 2402, 2405, 2406, 2403, 2405, 2403, 2404, - 2394, 2405, 2404, 2448, 2442, 2444, 2448, 2444, 2446, 2448, 2440, 2442, - 2448, 2468, 2440, 2466, 2468, 2448, 2466, 2448, 2450, 2470, 2440, 2468, - 2472, 2440, 2470, 2474, 2438, 2440, 2472, 2474, 2440, 2464, 2466, 2450, - 2476, 2438, 2474, 2478, 2436, 2438, 2476, 2478, 2438, 2458, 2462, 2450, - 2464, 2450, 2462, 2480, 2436, 2478, 2450, 2452, 2458, 2460, 2462, 2458, - 2482, 2436, 2480, 2454, 2458, 2452, 2484, 2436, 2482, 2434, 2436, 2484, - 2430, 2432, 2434, 2486, 2434, 2484, 2456, 2458, 2454, 2488, 2434, 2486, - 2388, 2428, 2430, 2490, 2434, 2488, 2492, 2430, 2434, 2490, 2492, 2434, - 2392, 2388, 2430, 2492, 2392, 2430, 2494, 2392, 2492, 2496, 2392, 2494, - 2388, 2426, 2428, 2424, 2426, 2388, 2424, 2388, 2422, 2422, 2388, 2420, - 2400, 2410, 2412, 2400, 2412, 2414, 2400, 2414, 2416, 2498, 2394, 2392, - 2400, 2416, 2418, 2400, 2418, 2388, 2388, 2418, 2420, 2498, 2392, 2496, - 2500, 2394, 2498, 2408, 2394, 2500 - ] - }, - { - "id": "shape2_part1", - "type": "TRIANGLES", - "indices": [ - 2502, 2503, 2504, 2503, 2505, 2504, 2504, 2505, 2506, 2505, 2507, 2506, - 2506, 2507, 2508, 2507, 2509, 2508, 2507, 2505, 2509, 2505, 2503, 2509, - 2509, 2503, 2508, 2503, 2502, 2508, 2508, 2502, 2506, 2502, 2504, 2506, - 2510, 2511, 2512, 2511, 2513, 2512, 2512, 2513, 2514, 2513, 2515, 2514, - 2514, 2515, 2516, 2515, 2517, 2516, 2515, 2513, 2517, 2513, 2511, 2517, - 2517, 2511, 2516, 2511, 2510, 2516, 2516, 2510, 2514, 2510, 2512, 2514, - 2518, 2519, 2520, 2519, 2521, 2520, 2520, 2521, 2522, 2521, 2523, 2522, - 2522, 2523, 2524, 2523, 2525, 2524, 2523, 2521, 2525, 2521, 2519, 2525, - 2525, 2519, 2524, 2519, 2518, 2524, 2524, 2518, 2522, 2518, 2520, 2522, - 2526, 2527, 2528, 2527, 2529, 2528, 2528, 2529, 2530, 2529, 2531, 2530, - 2530, 2531, 2532, 2531, 2533, 2532, 2531, 2529, 2533, 2529, 2527, 2533, - 2533, 2527, 2532, 2527, 2526, 2532, 2532, 2526, 2530, 2526, 2528, 2530, - 2534, 2535, 2536, 2535, 2537, 2536, 2536, 2537, 2538, 2537, 2539, 2538, - 2538, 2539, 2540, 2539, 2541, 2540, 2539, 2537, 2541, 2537, 2535, 2541, - 2541, 2535, 2540, 2535, 2534, 2540, 2540, 2534, 2538, 2534, 2536, 2538, - 2542, 2543, 2544, 2543, 2545, 2544, 2544, 2545, 2546, 2545, 2547, 2546, - 2546, 2547, 2548, 2547, 2549, 2548, 2547, 2545, 2549, 2545, 2543, 2549, - 2549, 2543, 2548, 2543, 2542, 2548, 2548, 2542, 2546, 2542, 2544, 2546, - 2550, 2551, 2552, 2551, 2553, 2552, 2552, 2553, 2554, 2553, 2555, 2554, - 2554, 2555, 2556, 2555, 2557, 2556, 2555, 2553, 2557, 2553, 2551, 2557, - 2557, 2551, 2556, 2551, 2550, 2556, 2556, 2550, 2554, 2550, 2552, 2554, - 2558, 2559, 2560, 2559, 2561, 2560, 2560, 2561, 2562, 2561, 2563, 2562, - 2562, 2563, 2564, 2563, 2565, 2564, 2563, 2561, 2565, 2561, 2559, 2565, - 2565, 2559, 2564, 2559, 2558, 2564, 2564, 2558, 2562, 2558, 2560, 2562, - 2566, 2567, 2568, 2567, 2569, 2568, 2568, 2569, 2570, 2569, 2571, 2570, - 2570, 2571, 2572, 2571, 2573, 2572, 2571, 2569, 2573, 2569, 2567, 2573, - 2573, 2567, 2572, 2567, 2566, 2572, 2572, 2566, 2570, 2566, 2568, 2570, - 2574, 2575, 2576, 2575, 2577, 2576, 2576, 2577, 2578, 2577, 2579, 2578, - 2578, 2579, 2580, 2579, 2581, 2580, 2579, 2577, 2581, 2577, 2575, 2581, - 2581, 2575, 2580, 2575, 2574, 2580, 2580, 2574, 2578, 2574, 2576, 2578, - 2582, 2583, 2584, 2583, 2585, 2584, 2584, 2585, 2586, 2585, 2587, 2586, - 2586, 2587, 2588, 2587, 2589, 2588, 2587, 2585, 2589, 2585, 2583, 2589, - 2589, 2583, 2588, 2583, 2582, 2588, 2588, 2582, 2586, 2582, 2584, 2586, - 2590, 2591, 2592, 2591, 2593, 2592, 2592, 2593, 2594, 2593, 2595, 2594, - 2594, 2595, 2596, 2595, 2597, 2596, 2595, 2593, 2597, 2593, 2591, 2597, - 2597, 2591, 2596, 2591, 2590, 2596, 2596, 2590, 2594, 2590, 2592, 2594 - ] - } - ] - } - ], - "materials": [ - { - "id": "ENTRANCE_DEFAULT_0", - "ambient": [ 0.101961, 0.000000, 0.000000], - "diffuse": [ 0.101961, 0.000000, 0.000000], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "BUILDING_DEFAULT_0", - "ambient": [ 0.501961, 0.450980, 0.274510], - "diffuse": [ 0.501961, 0.450980, 0.274510], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "ROOF_DEFAULT_0", - "ambient": [ 0.400000, 0.000000, 0.000000], - "diffuse": [ 0.400000, 0.000000, 0.000000], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_0_0", - "ambient": [ 0.196078, 0.196078, 0.196078], - "diffuse": [ 0.196078, 0.196078, 0.196078], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_1_0", - "ambient": [ 0.235294, 0.215686, 0.215686], - "diffuse": [ 0.235294, 0.215686, 0.215686], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_2_0", - "ambient": [ 0.470588, 0.470588, 0.470588], - "diffuse": [ 0.470588, 0.470588, 0.470588], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_3_0", - "ambient": [ 0.333333, 0.254902, 0.156863], - "diffuse": [ 0.333333, 0.254902, 0.156863], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_4_0", - "ambient": [ 0.149020, 0.149020, 0.149020], - "diffuse": [ 0.149020, 0.149020, 0.149020], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "GLASS_0", - "ambient": [ 0.450980, 0.450980, 0.450980], - "diffuse": [ 0.450980, 0.450980, 0.450980], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "GLASS_ROOF_0", - "ambient": [ 0.450980, 0.450980, 0.450980], - "diffuse": [ 0.450980, 0.450980, 0.450980], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - } - ], - "nodes": [ - { - "id": "test_root", - "children": [ - { - "id": "Building", - "parts": [ - { - "meshpartid": "shape1_part1", - "materialid": "BUILDING_DEFAULT_0" - }, - { - "meshpartid": "shape1_part2", - "materialid": "ROOF_DEFAULT_0" - }, - { - "meshpartid": "shape1_part3", - "materialid": "MAT_0_0" - }, - { - "meshpartid": "shape1_part4", - "materialid": "MAT_1_0" - }, - { - "meshpartid": "shape1_part5", - "materialid": "MAT_2_0" - }, - { - "meshpartid": "shape1_part6", - "materialid": "MAT_3_0" - }, - { - "meshpartid": "shape1_part7", - "materialid": "MAT_4_0" - }, - { - "meshpartid": "shape1_part8", - "materialid": "GLASS_0" - }, - { - "meshpartid": "shape1_part9", - "materialid": "GLASS_ROOF_0" - } - ] - }, - { - "id": "BuildingEntrance", - "parts": [ - { - "meshpartid": "shape2_part1", - "materialid": "ENTRANCE_DEFAULT_0" - } - ] - } - ] - } - ], - "animations": [] +{ + "version": [ 0, 1], + "id": "", + "meshes": [ + { + "attributes": ["POSITION"], + "vertices": [ + -44.509998, 15.000000, -48.078999, + -44.509998, 0.000000, -48.078999, + -43.915001, 15.000000, -52.787998, + -43.915001, 0.000000, -52.787998, + -41.426998, 15.000000, -54.946999, + -41.426998, 0.000000, -54.946999, + -39.555000, 15.000000, -52.331001, + -39.555000, 0.000000, -52.331001, + -27.945999, 15.000000, -62.484001, + -27.945999, 0.000000, -62.484001, + -27.465000, 15.000000, -65.924004, + -27.465000, 0.000000, -65.924004, + -25.465000, 15.000000, -67.649002, + -25.465000, 0.000000, -67.649002, + -35.355000, 15.000000, -80.039001, + -35.355000, 0.000000, -80.039001, + -38.505001, 15.000000, -80.440002, + -38.505001, 0.000000, -80.440002, + -74.762001, 15.000000, -84.570000, + -74.762001, 0.000000, -84.570000, + -75.042999, 15.000000, -82.355003, + -75.042999, 0.000000, -82.355003, + -139.567001, 15.000000, -81.752998, + -139.567001, 0.000000, -81.752998, + -144.876007, 15.000000, -67.615997, + -144.876007, 0.000000, -67.615997, + -150.720993, 15.000000, -56.105000, + -150.720993, 0.000000, -56.105000, + -156.759003, 15.000000, -44.205002, + -156.759003, 0.000000, -44.205002, + -158.550995, 15.000000, -46.576000, + -158.550995, 0.000000, -46.576000, + -160.832001, 15.000000, -41.756001, + -160.832001, 0.000000, -41.756001, + -179.602005, 15.000000, -2.182000, + -179.602005, 0.000000, -2.182000, + -152.699997, 15.000000, 8.160000, + -152.699997, 0.000000, 8.160000, + -150.587006, 15.000000, 2.984000, + -150.587006, 0.000000, 2.984000, + -148.065994, 15.000000, 3.930000, + -148.065994, 0.000000, 3.930000, + -150.292999, 15.000000, 9.084000, + -150.292999, 0.000000, 9.084000, + -144.227997, 15.000000, 11.388000, + -144.227997, 0.000000, 11.388000, + -137.654007, 15.000000, 13.893000, + -137.654007, 0.000000, 13.893000, + -137.279999, 15.000000, 13.013000, + -137.279999, 0.000000, 13.013000, + -136.136002, 15.000000, 14.238000, + -136.136002, 0.000000, 14.238000, + -134.585007, 15.000000, 15.095000, + -134.585007, 0.000000, 15.095000, + -132.806000, 15.000000, 15.496000, + -132.806000, 0.000000, 15.496000, + -130.725998, 15.000000, 15.507000, + -130.725998, 0.000000, 15.507000, + -129.362000, 15.000000, 15.173000, + -129.362000, 0.000000, 15.173000, + -127.764000, 15.000000, 14.483000, + -127.764000, 0.000000, 14.483000, + -126.607002, 15.000000, 13.693000, + -126.607002, 0.000000, 13.693000, + -125.651001, 15.000000, 12.590000, + -125.651001, 0.000000, 12.590000, + -125.102997, 15.000000, 11.399000, + -125.102997, 0.000000, 11.399000, + -124.420998, 15.000000, 12.023000, + -124.420998, 0.000000, 12.023000, + -90.463997, 15.000000, -14.816000, + -90.463997, 0.000000, -14.816000, + -90.189003, 15.000000, -14.416000, + -90.189003, 0.000000, -14.416000, + -82.660004, 15.000000, -20.271000, + -82.660004, 0.000000, -20.271000, + -84.825996, 15.000000, -22.931999, + -84.825996, 0.000000, -22.931999, + -79.911003, 15.000000, -26.705000, + -79.911003, 0.000000, -26.705000, + -75.846001, 15.000000, -26.049000, + -75.846001, 0.000000, -26.049000, + -74.348000, 15.000000, -23.677000, + -74.348000, 0.000000, -23.677000, + -62.124001, 15.000000, -33.741001, + -62.124001, 0.000000, -33.741001, + -61.467999, 15.000000, -38.426998, + -61.467999, 0.000000, -38.426998, + -59.061001, 15.000000, -40.554001, + -59.061001, 0.000000, -40.554001, + -57.127998, 15.000000, -37.915001, + -57.127998, 0.000000, -37.915001, + -158.798996, 27.000000, 128.639008, + -158.798996, 0.000000, 128.639008, + -158.457993, 27.000000, 128.115997, + -158.457993, 0.000000, 128.115997, + -175.410004, 27.000000, 116.528000, + -175.410004, 0.000000, 116.528000, + -188.804001, 27.000000, 136.298004, + -188.804001, 0.000000, 136.298004, + -172.761002, 27.000000, 147.139999, + -172.761002, 0.000000, 147.139999, + -167.011002, 27.000000, 139.380997, + -167.011002, 0.000000, 139.380997, + -170.013000, 27.000000, 137.367004, + -170.013000, 0.000000, 137.367004, + -167.345001, 27.000000, 133.192001, + -167.345001, 0.000000, 133.192001, + -164.195007, 27.000000, 135.417999, + -164.195007, 0.000000, 135.417999, + -108.244003, 10.000000, 115.526001, + -108.244003, 0.000000, 115.526001, + -119.900002, 10.000000, 132.623993, + -119.900002, 0.000000, 132.623993, + -124.133003, 10.000000, 138.925003, + -124.133003, 0.000000, 138.925003, + -107.628998, 10.000000, 150.001007, + -107.628998, 0.000000, 150.001007, + -93.559998, 10.000000, 159.440002, + -93.559998, 0.000000, 159.440002, + -82.981003, 10.000000, 139.481995, + -82.981003, 0.000000, 139.481995, + 27.530001, 20.000000, 83.933998, + 27.530001, 0.000000, 83.933998, + 38.791000, 20.000000, 91.336998, + 38.791000, 0.000000, 91.336998, + 49.911999, 20.000000, 99.563004, + 49.911999, 0.000000, 99.563004, + 63.660000, 20.000000, 111.796997, + 63.660000, 0.000000, 111.796997, + 74.139000, 20.000000, 121.860001, + 74.139000, 0.000000, 121.860001, + 102.873001, 20.000000, 91.805000, + 102.873001, 0.000000, 91.805000, + 105.086998, 20.000000, 81.485001, + 105.086998, 0.000000, 81.485001, + 89.098000, 20.000000, 65.856003, + 89.098000, 0.000000, 65.856003, + 55.255001, 20.000000, 49.091999, + 55.255001, 0.000000, 49.091999, + 47.458000, 20.000000, 50.283001, + 47.458000, 0.000000, 50.283001, + -15.889000, 29.500000, -22.754000, + -15.889000, 0.000000, -22.754000, + -7.784000, 29.500000, -18.846001, + -7.784000, 0.000000, -18.846001, + 0.635000, 29.500000, -20.983999, + 0.635000, 0.000000, -20.983999, + 5.837000, 29.500000, -28.063000, + 5.837000, 0.000000, -28.063000, + 5.202000, 29.500000, -37.103001, + 5.202000, 0.000000, -37.103001, + -0.977000, 29.500000, -43.391998, + -0.977000, 0.000000, -43.391998, + -9.871000, 29.500000, -44.237999, + -9.871000, 0.000000, -44.237999, + -16.959000, 29.500000, -39.439999, + -16.959000, 0.000000, -39.439999, + -19.433001, 29.500000, -30.346001, + -19.433001, 0.000000, -30.346001, + 1.350000, 24.500000, -5.187000, + 1.350000, 0.000000, -5.187000, + 26.280001, 24.500000, 4.119000, + 26.280001, 0.000000, 4.119000, + 26.500000, 24.500000, 3.652000, + 26.500000, 0.000000, 3.652000, + 41.431999, 24.500000, -26.459999, + 41.431999, 0.000000, -26.459999, + 51.991001, 24.500000, -51.662998, + 51.991001, 0.000000, -51.662998, + 21.504999, 24.500000, -63.831001, + 21.504999, 0.000000, -63.831001, + -3.404000, 24.500000, -49.848999, + -3.404000, 0.000000, -49.848999, + -9.750000, 24.500000, -44.883999, + -9.750000, 0.000000, -44.883999, + -10.747000, 24.500000, -46.174999, + -10.747000, 0.000000, -46.174999, + -12.693000, 24.500000, -48.702000, + -12.693000, 0.000000, -48.702000, + -27.157000, 24.500000, -37.470001, + -27.157000, 0.000000, -37.470001, + -25.111000, 24.500000, -34.854000, + -25.111000, 0.000000, -34.854000, + -24.141001, 24.500000, -33.606998, + -24.141001, 0.000000, -33.606998, + -55.362999, 24.500000, -9.161000, + -55.362999, 0.000000, -9.161000, + -50.681999, 24.500000, -3.017000, + -50.681999, 0.000000, -3.017000, + -21.212000, 24.500000, 10.876000, + -21.212000, 0.000000, 10.876000, + -9.824000, 24.500000, 1.425000, + -9.824000, 0.000000, 1.425000, + -10.954000, 24.500000, -2.716000, + -10.954000, 0.000000, -2.716000, + -7.691000, 24.500000, -4.753000, + -7.691000, 0.000000, -4.753000, + -4.815000, 24.500000, -7.280000, + -4.815000, 0.000000, -7.280000, + -15.889000, 24.500000, -22.754000, + -19.433001, 24.500000, -30.346001, + -16.959000, 24.500000, -39.439999, + -9.871000, 24.500000, -44.237999, + -0.977000, 24.500000, -43.391998, + 5.202000, 24.500000, -37.103001, + 5.837000, 24.500000, -28.063000, + 0.635000, 24.500000, -20.983999, + -7.784000, 24.500000, -18.846001, + 159.667007, 10.000000, -8.349000, + 159.667007, 0.000000, -8.349000, + 164.889008, 10.000000, -15.674000, + 164.889008, 0.000000, -15.674000, + 165.330994, 10.000000, -16.275000, + 165.330994, 0.000000, -16.275000, + 164.307999, 10.000000, -16.976000, + 164.307999, 0.000000, -16.976000, + 165.604996, 10.000000, -18.934999, + 165.604996, 0.000000, -18.934999, + 166.701996, 10.000000, -18.267000, + 166.701996, 0.000000, -18.267000, + 170.921005, 10.000000, -24.212000, + 170.921005, 0.000000, -24.212000, + 168.641006, 10.000000, -24.802000, + 168.641006, 0.000000, -24.802000, + 166.005997, 10.000000, -25.481001, + 166.005997, 0.000000, -25.481001, + 155.675003, 10.000000, -11.699000, + 155.675003, 0.000000, -11.699000, + 157.681000, 10.000000, -10.019000, + 157.681000, 0.000000, -10.019000, + -162.149002, 15.000000, -42.457001, + -162.149002, 0.000000, -42.457001, + -152.927994, 15.000000, -57.273998, + -152.927994, 0.000000, -57.273998, + -155.468994, 15.000000, -58.620998, + -155.468994, 0.000000, -58.620998, + -146.869003, 15.000000, -74.405998, + -146.869003, 0.000000, -74.405998, + -151.496994, 15.000000, -76.944000, + -151.496994, 0.000000, -76.944000, + -155.194000, 15.000000, -78.982002, + -155.194000, 0.000000, -78.982002, + -170.087006, 15.000000, -73.626999, + -170.087006, 0.000000, -73.626999, + -184.764999, 15.000000, -66.792000, + -184.764999, 0.000000, -66.792000, + -187.132004, 15.000000, -65.690002, + -187.132004, 0.000000, -65.690002, + -199.376007, 15.000000, -58.499001, + -199.376007, 0.000000, -58.499001, + -187.626999, 15.000000, -48.324001, + -187.626999, 0.000000, -48.324001, + -167.231003, 15.000000, -36.847000, + -167.231003, 0.000000, -36.847000, + -163.848007, 15.000000, -43.415001, + -163.848007, 0.000000, -43.415001, + -69.639999, 7.500000, -94.532997, + -69.639999, 0.000000, -94.532997, + -61.054001, 7.500000, -93.910004, + -61.054001, 0.000000, -93.910004, + -60.036999, 7.500000, -104.318001, + -60.036999, 0.000000, -104.318001, + -69.057999, 7.500000, -104.852997, + -69.057999, 0.000000, -104.852997, + -71.170998, 7.500000, -104.974998, + -71.170998, 0.000000, -104.974998, + -93.044998, 7.500000, -106.266998, + -93.044998, 0.000000, -106.266998, + -94.676003, 7.500000, -106.366997, + -94.676003, 0.000000, -106.366997, + -94.556000, 7.500000, -96.314003, + -94.556000, 0.000000, -96.314003, + -152.199005, 10.000000, -187.910995, + -152.199005, 0.000000, -187.910995, + -157.160004, 10.000000, -181.520996, + -157.160004, 0.000000, -181.520996, + -142.154999, 10.000000, -169.865005, + -142.154999, 0.000000, -169.865005, + -137.192993, 10.000000, -176.266006, + -137.192993, 0.000000, -176.266006, + -185.574005, 5.000000, -176.634003, + -185.574005, 0.000000, -176.634003, + -171.177002, 5.000000, -161.817001, + -171.177002, 0.000000, -161.817001, + -165.518997, 5.000000, -167.315994, + -165.518997, 0.000000, -167.315994, + -164.998001, 5.000000, -167.817001, + -164.998001, 0.000000, -167.817001, + -179.388000, 5.000000, -182.634003, + -179.388000, 0.000000, -182.634003, + -197.972000, 10.000000, -10.887000, + -197.972000, 0.000000, -10.887000, + -191.117004, 10.000000, -6.423000, + -191.117004, 0.000000, -6.423000, + -178.117996, 10.000000, -32.037998, + -178.117996, 0.000000, -32.037998, + -181.388000, 10.000000, -33.819000, + -181.388000, 0.000000, -33.819000, + -187.158997, 10.000000, -23.177000, + -187.158997, 0.000000, -23.177000, + -189.699997, 10.000000, -24.613001, + -189.699997, 0.000000, -24.613001, + -190.481995, 10.000000, -23.177000, + -190.481995, 0.000000, -23.177000, + -194.735001, 10.000000, -167.727997, + -194.735001, 0.000000, -167.727997, + -180.345001, 10.000000, -152.910995, + -180.345001, 0.000000, -152.910995, + -171.177002, 10.000000, -161.817001, + -185.574005, 10.000000, -176.634003, + 93.318001, 5.000000, 113.432999, + 93.318001, 0.000000, 113.432999, + 80.539001, 5.000000, 127.113998, + 80.539001, 0.000000, 127.113998, + 85.982002, 5.000000, 132.190002, + 85.982002, 0.000000, 132.190002, + 98.767998, 5.000000, 118.510002, + 98.767998, 0.000000, 118.510002, + -15.040000, 44.000000, 62.573002, + -15.040000, 41.000000, 62.573002, + -6.106000, 44.000000, 41.154999, + -6.106000, 41.000000, 41.154999, + -19.841000, 44.000000, 35.422001, + -19.841000, 41.000000, 35.422001, + -28.782000, 44.000000, 56.840000, + -28.782000, 41.000000, 56.840000, + -19.781000, 41.000000, 34.341999, + -19.781000, 0.000000, 34.341999, + -24.101000, 41.000000, 44.827999, + -24.101000, 0.000000, 44.827999, + -29.209999, 41.000000, 57.217999, + -29.209999, 0.000000, 57.217999, + -14.913000, 41.000000, 63.118000, + -14.913000, 0.000000, 63.118000, + -5.484000, 41.000000, 40.230999, + -5.484000, 0.000000, 40.230999, + -16.906000, 41.000000, 35.521999, + -16.906000, 0.000000, 35.521999, + -19.781000, 7.500000, 34.341999, + -16.906000, 7.500000, 35.521999, + -16.163000, 7.500000, 33.719002, + -16.163000, 0.000000, 33.719002, + -19.039000, 7.500000, 32.539001, + -19.039000, 0.000000, 32.539001, + -34.405998, 22.000000, -142.623993, + -34.405998, 0.000000, -142.623993, + -40.931999, 22.000000, -130.869003, + -40.931999, 0.000000, -130.869003, + -41.527000, 22.000000, -129.800003, + -41.527000, 0.000000, -129.800003, + -29.812000, 22.000000, -123.288002, + -29.812000, 0.000000, -123.288002, + -20.289000, 22.000000, -118.011002, + -20.289000, 0.000000, -118.011002, + -7.838000, 22.000000, -111.098000, + -7.838000, 0.000000, -111.098000, + 0.635000, 22.000000, -106.400002, + 0.635000, 0.000000, -106.400002, + 3.009000, 22.000000, -110.664001, + 3.009000, 0.000000, -110.664001, + 3.316000, 22.000000, -111.220001, + 3.316000, 0.000000, -111.220001, + 7.750000, 22.000000, -119.212997, + 7.750000, 0.000000, -119.212997, + -22.730000, 22.000000, -136.134003, + -22.730000, 0.000000, -136.134003, + -30.728001, 22.000000, -140.576004, + -30.728001, 0.000000, -140.576004, + 3.009000, 20.000000, -110.664001, + 0.635000, 20.000000, -106.400002, + -7.838000, 20.000000, -111.098000, + -20.289000, 20.000000, -118.011002, + -29.812000, 20.000000, -123.288002, + -41.527000, 20.000000, -129.800003, + -42.155998, 20.000000, -130.145004, + -42.155998, 0.000000, -130.145004, + -53.491001, 20.000000, -109.718002, + -53.491001, 0.000000, -109.718002, + -41.085999, 20.000000, -102.827003, + -41.085999, 0.000000, -102.827003, + -18.049000, 20.000000, -90.046997, + -18.049000, 0.000000, -90.046997, + -19.039000, 20.000000, -88.254997, + -19.039000, 0.000000, -88.254997, + -7.965000, 20.000000, -82.110001, + -7.965000, 0.000000, -82.110001, + 6.733000, 20.000000, -108.603996, + 6.733000, 0.000000, -108.603996, + -69.753998, 15.000000, 42.847000, + -69.753998, 0.000000, 42.847000, + -64.824997, 15.000000, 28.565001, + -64.824997, 0.000000, 28.565001, + -66.872002, 15.000000, 27.863001, + -66.872002, 0.000000, 27.863001, + -69.038002, 15.000000, 27.106001, + -69.038002, 0.000000, 27.106001, + -74.689003, 15.000000, 25.158001, + -74.689003, 0.000000, 25.158001, + -79.683998, 15.000000, 39.318001, + -79.683998, 0.000000, 39.318001, + -97.544998, 10.000000, 199.057999, + -97.544998, 0.000000, 199.057999, + -108.097000, 10.000000, 184.408997, + -108.097000, 0.000000, 184.408997, + -110.724998, 10.000000, 185.867004, + -110.724998, 0.000000, 185.867004, + -112.136002, 10.000000, 183.261993, + -112.136002, 0.000000, 183.261993, + -120.067001, 10.000000, 191.856003, + -120.067001, 0.000000, 191.856003, + -107.148003, 10.000000, 209.197998, + -107.148003, 0.000000, 209.197998, + -99.565002, 10.000000, 201.595993, + -99.565002, 0.000000, 201.595993, + -99.110001, 10.000000, 201.149994, + -99.110001, 0.000000, 201.149994, + -177.675995, 18.000000, 38.283001, + -177.675995, 0.000000, 38.283001, + -183.380997, 18.000000, 31.270000, + -183.380997, 0.000000, 31.270000, + -184.718002, 18.000000, 32.728001, + -184.718002, 0.000000, 32.728001, + -192.809006, 18.000000, 41.533001, + -192.809006, 0.000000, 41.533001, + -194.360992, 18.000000, 40.242001, + -194.360992, 0.000000, 40.242001, + -202.438995, 18.000000, 50.683998, + -202.438995, 0.000000, 50.683998, + -194.313995, 18.000000, 57.185001, + -194.313995, 0.000000, 57.185001, + -187.647003, 18.000000, 48.747002, + -187.647003, 0.000000, 48.747002, + -178.880005, 18.000000, 39.551998, + -178.880005, 0.000000, 39.551998, + -194.313995, 28.000000, 57.185001, + -199.268997, 28.000000, 63.708000, + -199.268997, 0.000000, 63.708000, + -209.701004, 28.000000, 78.445999, + -209.701004, 0.000000, 78.445999, + -199.403000, 28.000000, 87.619003, + -199.403000, 0.000000, 87.619003, + -182.565002, 28.000000, 66.346001, + -182.565002, 0.000000, 66.346001, + -169.873001, 28.000000, 50.293999, + -169.873001, 0.000000, 50.293999, + -168.701996, 28.000000, 48.813999, + -168.701996, 0.000000, 48.813999, + -177.675995, 28.000000, 38.283001, + -178.880005, 28.000000, 39.551998, + -187.647003, 28.000000, 48.747002, + -183.380997, 21.000000, 31.270000, + -189.947006, 21.000000, 24.357000, + -189.947006, 0.000000, 24.357000, + -199.796997, 21.000000, 15.462000, + -199.796997, 0.000000, 15.462000, + -212.048004, 21.000000, 6.679000, + -212.048004, 0.000000, 6.679000, + -212.931000, 21.000000, 8.327000, + -212.931000, 0.000000, 8.327000, + -214.421997, 21.000000, 11.110000, + -214.421997, 0.000000, 11.110000, + -217.457993, 21.000000, 16.709000, + -217.457993, 0.000000, 16.709000, + -225.395004, 21.000000, 30.613001, + -225.395004, 0.000000, 30.613001, + -232.804993, 21.000000, 41.366001, + -232.804993, 0.000000, 41.366001, + -239.806000, 21.000000, 50.951000, + -239.806000, 0.000000, 50.951000, + -240.354004, 21.000000, 51.863998, + -240.354004, 0.000000, 51.863998, + -222.513000, 21.000000, 67.415001, + -222.513000, 0.000000, 67.415001, + -209.701004, 21.000000, 78.445999, + -199.268997, 21.000000, 63.708000, + -194.313995, 21.000000, 57.185001, + -202.438995, 21.000000, 50.683998, + -194.360992, 21.000000, 40.242001, + -192.809006, 21.000000, 41.533001, + -184.718002, 21.000000, 32.728001, + -182.718994, 10.000000, -2.827000, + -182.718994, 0.000000, -2.827000, + -170.735001, 10.000000, -28.041000, + -170.735001, 0.000000, -28.041000, + -190.429001, 10.000000, -38.706001, + -190.429001, 0.000000, -38.706001, + -197.584000, 10.000000, -27.372999, + -197.584000, 0.000000, -27.372999, + -170.975998, 7.500000, -118.345001, + -170.975998, 0.000000, -118.345001, + -180.845993, 7.500000, -110.307999, + -180.845993, 0.000000, -110.307999, + -173.009003, 7.500000, -96.057999, + -173.009003, 0.000000, -96.057999, + -161.681000, 7.500000, -101.045998, + -161.681000, 0.000000, -101.045998, + -178.158005, 7.500000, -93.920998, + -178.158005, 0.000000, -93.920998, + -174.011993, 7.500000, -84.347000, + -174.011993, 0.000000, -84.347000, + -157.421005, 7.500000, -90.481003, + -157.421005, 0.000000, -90.481003, + -191.651993, 7.500000, -76.710999, + -191.651993, 0.000000, -76.710999, + -179.375000, 7.500000, -96.725998, + -179.375000, 0.000000, -96.725998, + -197.014999, 7.500000, -89.089996, + -197.014999, 0.000000, -89.089996, + -80.680000, 15.000000, 79.025002, + -80.680000, 0.000000, 79.025002, + -83.989998, 15.000000, 77.556000, + -83.989998, 0.000000, 77.556000, + -92.958000, 15.000000, 92.818001, + -92.958000, 0.000000, 92.818001, + -82.874001, 15.000000, 102.703003, + -82.874001, 0.000000, 102.703003, + -73.905998, 15.000000, 93.508003, + -73.905998, 0.000000, 93.508003, + -72.615997, 15.000000, 90.824997, + -72.615997, 0.000000, 90.824997, + -81.958000, 15.000000, 81.608002, + -81.958000, 0.000000, 81.608002, + -53.563999, 7.500000, 113.055000, + -53.563999, 0.000000, 113.055000, + -48.997002, 7.500000, 114.713997, + -48.997002, 0.000000, 114.713997, + -46.876999, 7.500000, 112.253998, + -46.876999, 0.000000, 112.253998, + -40.931999, 7.500000, 115.125000, + -40.931999, 0.000000, 115.125000, + -34.271999, 7.500000, 107.889999, + -34.271999, 0.000000, 107.889999, + -30.306999, 7.500000, 98.349998, + -30.306999, 0.000000, 98.349998, + -31.209000, 7.500000, 97.871002, + -31.209000, 0.000000, 97.871002, + -28.722000, 7.500000, 92.338997, + -28.722000, 0.000000, 92.338997, + -42.283001, 7.500000, 86.683998, + -42.283001, 0.000000, 86.683998, + -45.827000, 7.500000, 94.364998, + -45.827000, 0.000000, 94.364998, + -47.372002, 7.500000, 97.972000, + -47.372002, 0.000000, 97.972000, + -52.334000, 7.500000, 109.526001, + -52.334000, 0.000000, 109.526001, + -54.146000, 7.500000, 112.498001, + -54.146000, 0.000000, 112.498001, + -143.839996, 10.000000, 125.377998, + -143.839996, 0.000000, 125.377998, + -141.031006, 10.000000, 127.315002, + -141.031006, 0.000000, 127.315002, + -138.557007, 10.000000, 129.007004, + -138.557007, 0.000000, 129.007004, + -135.854996, 10.000000, 130.865997, + -135.854996, 0.000000, 130.865997, + -111.834999, 10.000000, 112.231003, + -111.834999, 0.000000, 112.231003, + -119.994003, 10.000000, 104.750999, + -119.994003, 0.000000, 104.750999, + -122.821999, 10.000000, 102.156998, + -122.821999, 0.000000, 102.156998, + -126.432999, 10.000000, 98.839996, + -126.432999, 0.000000, 98.839996, + -139.934998, 10.000000, 86.449997, + -139.934998, 0.000000, 86.449997, + -141.091003, 10.000000, 85.392998, + -141.091003, 0.000000, 85.392998, + -145.337997, 10.000000, 85.614998, + -145.337997, 0.000000, 85.614998, + -164.535995, 10.000000, 107.968002, + -164.535995, 0.000000, 107.968002, + -164.147995, 10.000000, 111.406998, + -164.147995, 0.000000, 111.406998, + -54.186001, 15.000000, 129.552002, + -54.186001, 0.000000, 129.552002, + -36.205002, 15.000000, 146.360992, + -36.205002, 0.000000, 146.360992, + -35.616001, 15.000000, 145.792999, + -35.616001, 0.000000, 145.792999, + -24.863001, 15.000000, 135.485001, + -24.863001, 0.000000, 135.485001, + -26.181000, 15.000000, 134.205002, + -26.181000, 0.000000, 134.205002, + -25.511999, 15.000000, 133.559998, + -25.511999, 0.000000, 133.559998, + -28.962000, 15.000000, 130.108994, + -28.962000, 0.000000, 130.108994, + -29.691000, 15.000000, 130.776993, + -29.691000, 0.000000, 130.776993, + -31.577000, 15.000000, 128.951004, + -31.577000, 0.000000, 128.951004, + -29.457001, 15.000000, 126.334999, + -29.457001, 0.000000, 126.334999, + -26.007000, 15.000000, 121.514999, + -26.007000, 0.000000, 121.514999, + -25.518999, 15.000000, 121.882004, + -25.518999, 0.000000, 121.882004, + -22.542999, 15.000000, 117.842003, + -22.542999, 0.000000, 117.842003, + -23.091000, 15.000000, 117.441002, + -23.091000, 0.000000, 117.441002, + -20.370001, 15.000000, 113.644997, + -20.370001, 0.000000, 113.644997, + -34.271999, 15.000000, 107.889999, + -40.931999, 15.000000, 115.125000, + -3.645000, 15.000000, 179.143005, + -3.645000, 0.000000, 179.143005, + 8.064000, 15.000000, 168.858002, + 8.064000, 0.000000, 168.858002, + -16.049999, 15.000000, 143.544998, + -16.049999, 0.000000, 143.544998, + -24.247999, 15.000000, 134.951004, + -24.247999, 0.000000, 134.951004, + -69.198997, 7.500000, 79.771004, + -69.198997, 0.000000, 79.771004, + -79.209000, 7.500000, 76.053001, + -79.209000, 0.000000, 76.053001, + -80.680000, 7.500000, 79.025002, + -81.958000, 7.500000, 81.608002, + -72.615997, 7.500000, 90.824997, + -16.371000, 15.000000, 104.550003, + -16.371000, 0.000000, 104.550003, + -30.306999, 15.000000, 98.349998, + -79.476997, 15.000000, 57.764000, + -79.476997, 0.000000, 57.764000, + -88.417000, 15.000000, 54.914001, + -88.417000, 0.000000, 54.914001, + -96.113998, 15.000000, 71.544998, + -96.113998, 0.000000, 71.544998, + -87.688004, 15.000000, 75.719002, + -87.688004, 0.000000, 75.719002, + -22.235001, 15.000000, 78.068001, + -22.235001, 0.000000, 78.068001, + -28.722000, 15.000000, 92.338997, + -31.209000, 15.000000, 97.871002, + -15.722000, 15.000000, 104.762001, + -15.722000, 0.000000, 104.762001, + -6.748000, 15.000000, 84.424004, + -6.748000, 0.000000, 84.424004, + -43.012001, 15.000000, 69.552002, + -43.012001, 0.000000, 69.552002, + -47.578999, 15.000000, 82.698997, + -47.578999, 0.000000, 82.698997, + -50.575001, 15.000000, 92.773003, + -50.575001, 0.000000, 92.773003, + -45.827000, 15.000000, 94.364998, + -42.283001, 15.000000, 86.683998, + -35.817001, 15.000000, 72.501999, + -35.817001, 0.000000, 72.501999, + -35.409000, 15.000000, 71.278000, + -35.409000, 0.000000, 71.278000, + -41.581001, 15.000000, 68.727997, + -41.581001, 0.000000, 68.727997, + -42.056000, 15.000000, 69.897003, + -42.056000, 0.000000, 69.897003, + -96.862999, 31.200001, 88.888000, + -96.862999, 0.000000, 88.888000, + -92.958000, 31.200001, 92.818001, + -83.989998, 31.200001, 77.556000, + -87.688004, 31.200001, 75.719002, + -96.113998, 31.200001, 71.544998, + -88.417000, 31.200001, 54.914001, + -116.616997, 31.200001, 45.908001, + -116.616997, 0.000000, 45.908001, + -127.810997, 31.200001, 57.686001, + -127.810997, 0.000000, 57.686001, + -62.771999, 10.000000, 181.447998, + -62.771999, 0.000000, 181.447998, + -53.717999, 10.000000, 168.067001, + -53.717999, 0.000000, 168.067001, + -68.141998, 10.000000, 153.317993, + -68.141998, 0.000000, 153.317993, + -77.570999, 10.000000, 170.817001, + -77.570999, 0.000000, 170.817001, + -86.751999, 10.000000, 164.283005, + -86.751999, 0.000000, 164.283005, + -20.704000, 10.000000, 211.235001, + -20.704000, 0.000000, 211.235001, + -12.318000, 10.000000, 202.919998, + -12.318000, 0.000000, 202.919998, + -37.327999, 10.000000, 177.339996, + -37.327999, 0.000000, 177.339996, + -40.717999, 10.000000, 180.490005, + -40.717999, 0.000000, 180.490005, + -51.077000, 10.000000, 170.593994, + -51.077000, 0.000000, 170.593994, + -139.606995, 10.000000, 142.007996, + -139.606995, 0.000000, 142.007996, + -143.578995, 10.000000, 139.225998, + -143.578995, 0.000000, 139.225998, + -146.052994, 10.000000, 137.511002, + -146.052994, 0.000000, 137.511002, + -159.574997, 10.000000, 156.490997, + -159.574997, 0.000000, 156.490997, + -152.485992, 10.000000, 161.600006, + -152.485992, 0.000000, 161.600006, + -147.464005, 10.000000, 154.431000, + -147.464005, 0.000000, 154.431000, + -146.675003, 10.000000, 153.328995, + -146.675003, 0.000000, 153.328995, + -146.261002, 10.000000, 152.684006, + -146.261002, 0.000000, 152.684006, + -142.401993, 10.000000, 146.350006, + -142.401993, 0.000000, 146.350006, + -145.485001, 10.000000, 136.720993, + -145.485001, 0.000000, 136.720993, + -156.156998, 10.000000, 129.039993, + -156.156998, 0.000000, 129.039993, + -156.177002, 10.000000, 129.029007, + -156.177002, 0.000000, 129.029007, + -156.725998, 10.000000, 129.807999, + -156.725998, 0.000000, 129.807999, + -158.136993, 10.000000, 128.783997, + -158.136993, 0.000000, 128.783997, + -158.270996, 10.000000, 128.973007, + -158.270996, 0.000000, 128.973007, + -158.798996, 10.000000, 128.639008, + -164.195007, 10.000000, 135.417999, + -167.011002, 10.000000, 139.380997, + -172.761002, 10.000000, 147.139999, + 134.363007, 15.000000, -18.679001, + 134.363007, 0.000000, -18.679001, + 110.115997, 15.000000, 10.275000, + 110.115997, 0.000000, 10.275000, + 106.638000, 15.000000, 7.180000, + 106.638000, 0.000000, 7.180000, + 91.064003, 15.000000, 25.593000, + 91.064003, 0.000000, 25.593000, + 89.412003, 15.000000, 27.452000, + 89.412003, 0.000000, 27.452000, + 93.859001, 15.000000, 31.504000, + 93.859001, 0.000000, 31.504000, + 93.504997, 15.000000, 31.915001, + 93.504997, 0.000000, 31.915001, + 105.908997, 15.000000, 42.668999, + 105.908997, 0.000000, 42.668999, + 118.147003, 15.000000, 55.827000, + 118.147003, 0.000000, 55.827000, + 128.552002, 15.000000, 56.138000, + 128.552002, 0.000000, 56.138000, + 148.184998, 15.000000, 38.404999, + 148.184998, 0.000000, 38.404999, + 150.123993, 15.000000, 38.493999, + 150.123993, 0.000000, 38.493999, + 154.630997, 15.000000, 34.353001, + 154.630997, 0.000000, 34.353001, + 154.852005, 15.000000, 32.382999, + 154.852005, 0.000000, 32.382999, + 165.216995, 15.000000, 23.021000, + 165.216995, 0.000000, 23.021000, + 165.423996, 15.000000, 13.581000, + 165.423996, 0.000000, 13.581000, + 157.600006, 15.000000, 5.010000, + 157.600006, 0.000000, 5.010000, + 158.054993, 15.000000, 4.498000, + 158.054993, 0.000000, 4.498000, + 64.135002, 15.000000, -42.825001, + 64.135002, 0.000000, -42.825001, + 79.280998, 15.000000, -37.325001, + 79.280998, 0.000000, -37.325001, + 79.474998, 15.000000, -38.027000, + 79.474998, 0.000000, -38.027000, + 84.818001, 15.000000, -36.680000, + 84.818001, 0.000000, -36.680000, + 84.564003, 15.000000, -35.455002, + 84.564003, 0.000000, -35.455002, + 90.100998, 15.000000, -32.750000, + 90.100998, 0.000000, -32.750000, + 97.643997, 15.000000, -44.784000, + 97.643997, 0.000000, -44.784000, + 66.809998, 15.000000, -52.365002, + 66.809998, 0.000000, -52.365002, + 63.419998, 15.000000, -43.159000, + 63.419998, 0.000000, -43.159000, + 111.907997, 15.000000, -41.744999, + 111.907997, 0.000000, -41.744999, + 88.602997, 15.000000, -28.798000, + 88.602997, 0.000000, -28.798000, + 95.203003, 15.000000, -25.158001, + 95.203003, 0.000000, -25.158001, + 98.694000, 15.000000, -30.134001, + 98.694000, 0.000000, -30.134001, + 101.469002, 15.000000, -28.396999, + 101.469002, 0.000000, -28.396999, + 102.078003, 15.000000, -20.527000, + 102.078003, 0.000000, -20.527000, + 102.892998, 15.000000, -21.962999, + 102.892998, 0.000000, -21.962999, + 104.191002, 15.000000, -21.173000, + 104.191002, 0.000000, -21.173000, + 116.970001, 15.000000, -37.236000, + 116.970001, 0.000000, -37.236000, + 117.237000, 15.000000, -37.536999, + 117.237000, 0.000000, -37.536999, + 112.175003, 15.000000, -41.966999, + 112.175003, 0.000000, -41.966999, + 62.375999, 15.000000, -38.951000, + 62.375999, 0.000000, -38.951000, + 60.175999, 15.000000, -34.097000, + 60.175999, 0.000000, -34.097000, + 59.748001, 15.000000, -33.151001, + 59.748001, 0.000000, -33.151001, + 57.133999, 15.000000, -30.011999, + 57.133999, 0.000000, -30.011999, + 57.930000, 15.000000, -29.143000, + 57.930000, 0.000000, -29.143000, + 56.023998, 15.000000, -24.947001, + 56.023998, 0.000000, -24.947001, + 51.102001, 15.000000, -14.082000, + 51.102001, 0.000000, -14.082000, + 46.220001, 15.000000, -3.306000, + 46.220001, 0.000000, -3.306000, + 42.181000, 15.000000, 5.611000, + 42.181000, 0.000000, 5.611000, + 39.881001, 15.000000, 10.676000, + 39.881001, 0.000000, 10.676000, + 35.902000, 15.000000, 19.459000, + 35.902000, 0.000000, 19.459000, + 33.808998, 15.000000, 22.476000, + 33.808998, 0.000000, 22.476000, + 29.329000, 15.000000, 28.931999, + 29.329000, 0.000000, 28.931999, + 30.150999, 15.000000, 29.288000, + 30.150999, 0.000000, 29.288000, + 52.486000, 15.000000, 39.018002, + 52.486000, 0.000000, 39.018002, + 66.716003, 15.000000, 45.207001, + 66.716003, 0.000000, 45.207001, + 68.702003, 15.000000, 43.035999, + 68.702003, 0.000000, 43.035999, + 69.056999, 15.000000, 43.403999, + 69.056999, 0.000000, 43.403999, + 70.581001, 15.000000, 41.723000, + 70.581001, 0.000000, 41.723000, + 72.085999, 15.000000, 40.063999, + 72.085999, 0.000000, 40.063999, + 71.718002, 15.000000, 39.730000, + 71.718002, 0.000000, 39.730000, + 73.737999, 15.000000, 37.526001, + 73.737999, 0.000000, 37.526001, + 74.580002, 15.000000, 38.339001, + 74.580002, 0.000000, 38.339001, + 80.865997, 15.000000, 31.103001, + 80.865997, 0.000000, 31.103001, + 83.125999, 15.000000, 28.497999, + 83.125999, 0.000000, 28.497999, + 87.874001, 15.000000, 23.021000, + 87.874001, 0.000000, 23.021000, + 120.546997, 15.000000, -33.417999, + 120.546997, 0.000000, -33.417999, + -52.132999, 15.000000, 24.691000, + -52.132999, 0.000000, 24.691000, + -50.448002, 15.000000, 23.054001, + -50.448002, 0.000000, 23.054001, + -48.636002, 15.000000, 17.934000, + -48.636002, 0.000000, 17.934000, + -44.389999, 15.000000, 19.625999, + -44.389999, 0.000000, 19.625999, + -41.220001, 15.000000, 11.911000, + -41.220001, 0.000000, 11.911000, + -54.955002, 15.000000, 5.566000, + -54.955002, 0.000000, 5.566000, + -60.605999, 15.000000, 19.358999, + -60.605999, 0.000000, 19.358999, + -60.833000, 15.000000, 19.926001, + -60.833000, 0.000000, 19.926001, + -56.172001, 15.000000, 21.663000, + -56.172001, 0.000000, 21.663000, + -56.786999, 15.000000, 23.021000, + -56.786999, 0.000000, 23.021000, + -62.859001, 15.000000, -4.542000, + -62.859001, 0.000000, -4.542000, + -67.674004, 15.000000, -0.712000, + -67.674004, 0.000000, -0.712000, + -63.421001, 15.000000, 5.522000, + -63.421001, 0.000000, 5.522000, + -67.875000, 15.000000, 9.307000, + -67.875000, 0.000000, 9.307000, + -66.263000, 15.000000, 11.533000, + -66.263000, 0.000000, 11.533000, + -67.594002, 15.000000, 15.095000, + -67.594002, 0.000000, 15.095000, + -68.055000, 15.000000, 16.174999, + -68.055000, 0.000000, 16.174999, + -64.498001, 15.000000, 17.688999, + -64.498001, 0.000000, 17.688999, + -62.557999, 15.000000, 18.524000, + -62.557999, 0.000000, 18.524000, + -73.719002, 23.200001, 14.372000, + -73.719002, 0.000000, 14.372000, + -78.292999, 23.200001, 7.871000, + -78.292999, 0.000000, 7.871000, + -96.703003, 23.200001, 22.743000, + -96.703003, 0.000000, 22.743000, + -91.981003, 23.200001, 28.921000, + -91.981003, 0.000000, 28.921000, + -91.365997, 23.200001, 28.497999, + -91.365997, 0.000000, 28.497999, + -16.691999, 15.000000, 23.099001, + -16.691999, 0.000000, 23.099001, + -25.865999, 15.000000, 18.646000, + -25.865999, 0.000000, 18.646000, + -28.936001, 15.000000, 25.580999, + -28.936001, 0.000000, 25.580999, + -19.975000, 15.000000, 30.334999, + -19.975000, 0.000000, 30.334999, + -1.639000, 20.000000, 2.271000, + -1.639000, 0.000000, 2.271000, + 22.434000, 20.000000, 12.501000, + 22.434000, 0.000000, 12.501000, + 26.280001, 20.000000, 4.119000, + 1.350000, 20.000000, -5.187000, + -66.872002, 7.500000, 27.863001, + -62.557999, 7.500000, 18.524000, + -64.498001, 7.500000, 17.688999, + -69.038002, 7.500000, 27.106001, + -14.692000, 15.000000, 32.939999, + -14.692000, 0.000000, 32.939999, + -11.329000, 15.000000, 25.604000, + -11.329000, 0.000000, 25.604000, + -2.856000, 20.000000, 1.748000, + -2.856000, 0.000000, 1.748000, + -7.738000, 20.000000, 14.026000, + -7.738000, 0.000000, 14.026000, + 16.597000, 20.000000, 25.225000, + 16.597000, 0.000000, 25.225000, + -50.441002, 15.000000, 34.786999, + -50.441002, 0.000000, 34.786999, + -44.750999, 15.000000, 37.103001, + -44.750999, 0.000000, 37.103001, + -41.286999, 15.000000, 28.409000, + -41.286999, 0.000000, 28.409000, + -29.558001, 15.000000, 26.983999, + -29.558001, 0.000000, 26.983999, + -48.816002, 15.000000, 30.413000, + -48.816002, 0.000000, 30.413000, + -15.187000, 15.000000, 34.141998, + -15.187000, 0.000000, 34.141998, + -2.328000, 15.000000, 39.652000, + -2.328000, 0.000000, 39.652000, + -7.203000, 15.000000, 50.316002, + -7.203000, 0.000000, 50.316002, + 2.701000, 15.000000, 54.636002, + 2.701000, 0.000000, 54.636002, + 8.111000, 15.000000, 43.070000, + 8.111000, 0.000000, 43.070000, + 8.552000, 15.000000, 43.280998, + 8.552000, 0.000000, 43.280998, + 8.759000, 15.000000, 42.835999, + 8.759000, 0.000000, 42.835999, + 8.318000, 15.000000, 42.624001, + 8.318000, 0.000000, 42.624001, + 9.334000, 15.000000, 40.442001, + 9.334000, 0.000000, 40.442001, + 9.783000, 15.000000, 40.653999, + 9.783000, 0.000000, 40.653999, + 10.010000, 15.000000, 40.209000, + 10.010000, 0.000000, 40.209000, + 9.548000, 15.000000, 39.986000, + 9.548000, 0.000000, 39.986000, + 14.363000, 15.000000, 29.656000, + 14.363000, 0.000000, 29.656000, + -8.373000, 15.000000, 19.146999, + -8.373000, 0.000000, 19.146999, + -8.527000, 15.000000, 19.481001, + -8.527000, 0.000000, 19.481001, + -55.249001, 15.000000, 47.744999, + -55.249001, 0.000000, 47.744999, + -54.561001, 15.000000, 28.231001, + -54.561001, 0.000000, 28.231001, + -60.030998, 15.000000, 42.580002, + -60.030998, 0.000000, 42.580002, + -61.160999, 15.000000, 45.841000, + -61.160999, 0.000000, 45.841000, + -62.751999, 15.000000, 24.691000, + -62.751999, 0.000000, 24.691000, + -63.259998, 15.000000, 24.568001, + -63.259998, 0.000000, 24.568001, + -78.252998, 15.000000, 20.761000, + -78.252998, 0.000000, 20.761000, + -72.442001, 15.000000, 16.264000, + -72.442001, 0.000000, 16.264000, + -73.719002, 15.000000, 14.372000, + -91.365997, 15.000000, 28.497999, + -85.569000, 15.000000, 35.265999, + -85.569000, 0.000000, 35.265999, + -82.351997, 15.000000, 38.126999, + -82.351997, 0.000000, 38.126999, + -24.101000, 15.000000, 44.827999, + -31.417000, 15.000000, 41.834000, + -31.417000, 0.000000, 41.834000, + -32.199001, 15.000000, 43.726002, + -32.199001, 0.000000, 43.726002, + -35.542999, 15.000000, 42.390999, + -35.542999, 0.000000, 42.390999, + -39.882000, 15.000000, 53.277000, + -39.882000, 0.000000, 53.277000, + -29.209999, 15.000000, 57.217999, + -34.933998, 15.000000, 41.043999, + -34.933998, 0.000000, 41.043999, + 6.332000, 15.000000, 132.835999, + 6.332000, 0.000000, 132.835999, + 6.599000, 15.000000, 128.472000, + 6.599000, 0.000000, 128.472000, + 1.557000, 15.000000, 126.691002, + 1.557000, 0.000000, 126.691002, + 13.694000, 15.000000, 95.878998, + 13.694000, 0.000000, 95.878998, + 8.271000, 15.000000, 92.338997, + 8.271000, 0.000000, 92.338997, + 2.179000, 15.000000, 88.487000, + 2.179000, 0.000000, 88.487000, + 0.655000, 15.000000, 88.253998, + 0.655000, 0.000000, 88.253998, + -0.348000, 15.000000, 88.598999, + -0.348000, 0.000000, 88.598999, + -1.158000, 15.000000, 89.544998, + -1.158000, 0.000000, 89.544998, + -8.353000, 15.000000, 109.214996, + -8.353000, 0.000000, 109.214996, + -9.744000, 15.000000, 112.297997, + -9.744000, 0.000000, 112.297997, + -10.827000, 15.000000, 116.606003, + -10.827000, 0.000000, 116.606003, + -11.482000, 15.000000, 116.516998, + -11.482000, 0.000000, 116.516998, + -14.465000, 15.000000, 126.803001, + -14.465000, 0.000000, 126.803001, + -12.753000, 15.000000, 130.153000, + -12.753000, 0.000000, 130.153000, + 11.742000, 7.500000, 165.173004, + 11.742000, 0.000000, 165.173004, + -9.222000, 7.500000, 143.399994, + -9.222000, 0.000000, 143.399994, + -16.049999, 7.500000, 143.544998, + 8.064000, 7.500000, 168.858002, + 16.583000, 7.500000, 177.462006, + 16.583000, 0.000000, 177.462006, + 18.436001, 7.500000, 172.419998, + 18.436001, 0.000000, 172.419998, + 11.642000, 15.000000, 194.104004, + 11.642000, 0.000000, 194.104004, + 14.831000, 15.000000, 185.210007, + 14.831000, 0.000000, 185.210007, + 13.628000, 15.000000, 184.820007, + 13.628000, 0.000000, 184.820007, + 16.583000, 15.000000, 177.462006, + 11.334000, 15.000000, 133.537003, + 11.334000, 0.000000, 133.537003, + 11.956000, 15.000000, 133.626007, + 11.956000, 0.000000, 133.626007, + 26.527000, 15.000000, 146.639008, + 26.527000, 0.000000, 146.639008, + 47.130001, 15.000000, 123.663002, + 47.130001, 0.000000, 123.663002, + 23.912001, 15.000000, 102.546997, + 23.912001, 0.000000, 102.546997, + 12.812000, 15.000000, 116.717003, + 12.812000, 0.000000, 116.717003, + 7.201000, 15.000000, 132.957993, + 7.201000, 0.000000, 132.957993, + 58.257000, 15.000000, 156.179001, + 58.257000, 0.000000, 156.179001, + 49.530998, 15.000000, 149.610992, + 49.530998, 0.000000, 149.610992, + 48.541000, 15.000000, 150.947006, + 48.541000, 0.000000, 150.947006, + 47.557999, 15.000000, 150.246002, + 47.557999, 0.000000, 150.246002, + 46.969002, 15.000000, 150.802002, + 46.969002, 0.000000, 150.802002, + 46.000000, 15.000000, 149.990005, + 46.000000, 0.000000, 149.990005, + 38.952000, 15.000000, 157.725998, + 38.952000, 0.000000, 157.725998, + 39.901001, 15.000000, 158.572006, + 39.901001, 0.000000, 158.572006, + 37.333000, 15.000000, 161.834000, + 37.333000, 0.000000, 161.834000, + 37.681000, 15.000000, 162.100998, + 37.681000, 0.000000, 162.100998, + 48.046001, 15.000000, 169.792999, + 48.046001, 0.000000, 169.792999, + 33.889000, 15.000000, 170.326996, + 33.889000, 0.000000, 170.326996, + 44.081001, 15.000000, 175.970993, + 44.081001, 0.000000, 175.970993, + 32.618999, 15.000000, 169.636993, + 32.618999, 0.000000, 169.636993, + 7.603000, 15.000000, 197.955994, + 7.603000, 0.000000, 197.955994, + 14.925000, 15.000000, 205.324997, + 14.925000, 0.000000, 205.324997, + 18.937000, 15.000000, 201.529007, + 18.937000, 0.000000, 201.529007, + 21.739000, 15.000000, 204.735001, + 21.739000, 0.000000, 204.735001, + 29.629999, 15.000000, 197.399002, + 29.629999, 0.000000, 197.399002, + 35.514000, 15.000000, 190.408005, + 35.514000, 0.000000, 190.408005, + 44.474998, 15.000000, 176.182007, + 44.474998, 0.000000, 176.182007, + 33.327999, 15.000000, 171.128998, + 33.327999, 0.000000, 171.128998, + 26.667000, 15.000000, 168.901993, + 26.667000, 0.000000, 168.901993, + 19.392000, 15.000000, 186.869003, + 19.392000, 0.000000, 186.869003, + 68.542000, 15.000000, 142.475998, + 68.542000, 0.000000, 142.475998, + 59.834999, 15.000000, 134.828995, + 59.834999, 0.000000, 134.828995, + 51.470001, 15.000000, 144.001007, + 51.470001, 0.000000, 144.001007, + 51.890999, 15.000000, 144.367996, + 51.890999, 0.000000, 144.367996, + 52.813999, 15.000000, 145.169998, + 52.813999, 0.000000, 145.169998, + 54.752998, 15.000000, 130.365005, + 54.752998, 0.000000, 130.365005, + 34.036999, 15.000000, 153.339996, + 34.036999, 0.000000, 153.339996, + 44.287998, 15.000000, 148.520004, + 44.287998, 0.000000, 148.520004, + 49.376999, 15.000000, 142.699005, + 49.376999, 0.000000, 142.699005, + 51.269001, 15.000000, 144.223999, + 51.269001, 0.000000, 144.223999, + -110.424004, 10.000000, 160.018997, + -110.424004, 0.000000, 160.018997, + -119.773003, 10.000000, 172.520004, + -119.773003, 0.000000, 172.520004, + -114.236000, 10.000000, 176.973007, + -114.236000, 0.000000, 176.973007, + -111.889000, 10.000000, 173.912003, + -111.889000, 0.000000, 173.912003, + -106.773003, 10.000000, 177.539993, + -106.773003, 0.000000, 177.539993, + -99.110001, 10.000000, 168.468002, + -99.110001, 0.000000, 168.468002, + -90.136002, 10.000000, 175.169006, + -90.136002, 0.000000, 175.169006, + -97.838997, 10.000000, 184.664993, + -97.838997, 0.000000, 184.664993, + -98.848999, 10.000000, 185.910995, + -98.848999, 0.000000, 185.910995, + -96.188004, 10.000000, 188.048996, + -96.188004, 0.000000, 188.048996, + -97.598999, 10.000000, 189.908005, + -97.598999, 0.000000, 189.908005, + -93.365997, 10.000000, 193.246994, + -93.365997, 0.000000, 193.246994, + -83.369003, 10.000000, 180.223007, + -83.369003, 0.000000, 180.223007, + -111.842003, 10.000000, 182.938995, + -111.842003, 0.000000, 182.938995, + -116.035004, 10.000000, 179.166000, + -116.035004, 0.000000, 179.166000, + -127.764000, 10.000000, 181.524994, + -127.764000, 0.000000, 181.524994, + -67.626999, 10.000000, 191.376999, + -67.626999, 0.000000, 191.376999, + -67.713997, 10.000000, 191.498993, + -67.713997, 0.000000, 191.498993, + -68.209000, 10.000000, 191.164993, + -68.209000, 0.000000, 191.164993, + -68.542999, 10.000000, 191.643997, + -68.542999, 0.000000, 191.643997, + -71.016998, 10.000000, 189.873993, + -71.016998, 0.000000, 189.873993, + -70.737000, 10.000000, 189.462006, + -70.737000, 0.000000, 189.462006, + -71.980003, 10.000000, 188.593994, + -71.980003, 0.000000, 188.593994, + -72.267998, 10.000000, 189.005997, + -72.267998, 0.000000, 189.005997, + -74.795998, 10.000000, 187.235992, + -74.795998, 0.000000, 187.235992, + -74.514999, 10.000000, 186.824005, + -74.514999, 0.000000, 186.824005, + -75.764999, 10.000000, 185.955994, + -75.764999, 0.000000, 185.955994, + -76.053001, 10.000000, 186.367996, + -76.053001, 0.000000, 186.367996, + -78.573997, 10.000000, 184.664993, + -78.573997, 0.000000, 184.664993, + -78.233002, 10.000000, 184.175003, + -78.233002, 0.000000, 184.175003, + -78.727997, 10.000000, 183.830002, + -78.727997, 0.000000, 183.830002, + -78.634003, 10.000000, 183.695999, + -78.634003, 0.000000, 183.695999, + -83.382004, 10.000000, 180.279007, + -83.382004, 0.000000, 180.279007, + -83.455002, 10.000000, 180.378998, + -83.455002, 0.000000, 180.378998, + -92.871002, 10.000000, 192.690002, + -92.871002, 0.000000, 192.690002, + -93.057999, 10.000000, 192.934998, + -93.057999, 0.000000, 192.934998, + -95.332001, 10.000000, 195.906998, + -95.332001, 0.000000, 195.906998, + -95.151001, 10.000000, 196.052002, + -95.151001, 0.000000, 196.052002, + -99.110001, 10.000000, 201.216995, + -99.110001, 0.000000, 201.216995, + -99.530998, 10.000000, 201.639999, + -99.530998, 0.000000, 201.639999, + -107.127998, 10.000000, 209.210007, + -107.127998, 0.000000, 209.210007, + -107.355003, 10.000000, 209.432007, + -107.355003, 0.000000, 209.432007, + -101.931999, 10.000000, 216.199997, + -101.931999, 0.000000, 216.199997, + -101.551003, 10.000000, 215.865997, + -101.551003, 0.000000, 215.865997, + -99.652000, 10.000000, 218.237000, + -99.652000, 0.000000, 218.237000, + -100.039001, 10.000000, 218.570999, + -100.039001, 0.000000, 218.570999, + -98.749001, 10.000000, 220.162994, + -98.749001, 0.000000, 220.162994, + -98.367996, 10.000000, 219.839996, + -98.367996, 0.000000, 219.839996, + -96.461998, 10.000000, 222.210999, + -96.461998, 0.000000, 222.210999, + -96.862999, 10.000000, 222.533997, + -96.862999, 0.000000, 222.533997, + -94.682999, 10.000000, 225.250000, + -94.682999, 0.000000, 225.250000, + -94.000999, 10.000000, 224.692993, + -94.000999, 0.000000, 224.692993, + -91.848000, 10.000000, 227.354004, + -91.848000, 0.000000, 227.354004, + -92.416000, 10.000000, 227.843994, + -92.416000, 0.000000, 227.843994, + -91.152000, 10.000000, 229.423996, + -91.152000, 0.000000, 229.423996, + -90.570999, 10.000000, 228.945999, + -90.570999, 0.000000, 228.945999, + -88.436996, 10.000000, 231.628006, + -88.436996, 0.000000, 231.628006, + -89.133003, 10.000000, 232.184998, + -89.133003, 0.000000, 232.184998, + -87.627998, 10.000000, 234.033005, + -87.627998, 0.000000, 234.033005, + -86.873001, 10.000000, 233.442993, + -86.873001, 0.000000, 233.442993, + -85.668999, 10.000000, 234.945007, + -85.668999, 0.000000, 234.945007, + -77.403999, 10.000000, 225.962006, + -77.403999, 0.000000, 225.962006, + -80.171997, 10.000000, 222.612000, + -80.171997, 0.000000, 222.612000, + -78.306000, 10.000000, 219.962997, + -78.306000, 0.000000, 219.962997, + -78.198997, 10.000000, 219.796005, + -78.198997, 0.000000, 219.796005, + -78.112000, 10.000000, 219.617004, + -78.112000, 0.000000, 219.617004, + -78.045998, 10.000000, 219.417007, + -78.045998, 0.000000, 219.417007, + -78.012001, 10.000000, 219.216995, + -78.012001, 0.000000, 219.216995, + -77.985001, 10.000000, 218.893997, + -77.985001, 0.000000, 218.893997, + -73.919998, 10.000000, 221.798996, + -73.919998, 0.000000, 221.798996, + -73.485001, 10.000000, 221.253998, + -73.485001, 0.000000, 221.253998, + -71.680000, 10.000000, 219.016006, + -71.680000, 0.000000, 219.016006, + -71.572998, 10.000000, 219.104996, + -71.572998, 0.000000, 219.104996, + -69.386002, 10.000000, 216.746002, + -69.386002, 0.000000, 216.746002, + -74.007004, 10.000000, 213.617996, + -74.007004, 0.000000, 213.617996, + -74.053001, 10.000000, 213.584000, + -74.053001, 0.000000, 213.584000, + -75.217003, 10.000000, 212.804993, + -75.217003, 0.000000, 212.804993, + -74.046997, 10.000000, 211.067993, + -74.046997, 0.000000, 211.067993, + -73.987000, 10.000000, 211.113007, + -73.987000, 0.000000, 211.113007, + -72.415001, 10.000000, 208.820007, + -72.415001, 0.000000, 208.820007, + -62.826000, 10.000000, 194.794006, + -62.826000, 0.000000, 194.794006, + -62.778999, 10.000000, 194.716003, + -62.778999, 0.000000, 194.716003, + -64.290001, 10.000000, 193.669998, + -64.290001, 0.000000, 193.669998, + 85.139000, 15.000000, 179.565994, + 85.139000, 0.000000, 179.565994, + 95.705002, 15.000000, 167.210007, + 95.705002, 0.000000, 167.210007, + 83.018997, 15.000000, 154.710007, + 83.018997, 0.000000, 154.710007, + 61.186001, 15.000000, 183.785004, + 61.186001, 0.000000, 183.785004, + 72.507004, 15.000000, 191.988998, + 72.507004, 0.000000, 191.988998, + 76.232002, 15.000000, 186.279007, + 76.232002, 0.000000, 186.279007, + 76.834000, 15.000000, 186.723999, + 76.834000, 0.000000, 186.723999, + 79.943001, 15.000000, 182.171005, + 79.943001, 0.000000, 182.171005, + 78.827003, 15.000000, 181.335999, + 78.827003, 0.000000, 181.335999, + 82.283997, 15.000000, 176.628006, + 82.283997, 0.000000, 176.628006, + 99.677002, 7.300000, 171.440002, + 99.677002, 0.000000, 171.440002, + 88.167999, 7.300000, 187.358002, + 88.167999, 0.000000, 187.358002, + 92.962997, 7.300000, 192.089005, + 92.962997, 0.000000, 192.089005, + 103.943001, 7.300000, 175.981995, + 103.943001, 0.000000, 175.981995, + 103.943001, 15.000000, 175.981995, + 92.962997, 15.000000, 192.089005, + 99.456001, 15.000000, 198.667999, + 99.456001, 0.000000, 198.667999, + 101.549004, 15.000000, 195.873993, + 101.549004, 0.000000, 195.873993, + 110.704002, 15.000000, 183.195007, + 110.704002, 0.000000, 183.195007, + 56.532001, 7.500000, 189.205994, + 56.532001, 0.000000, 189.205994, + 72.600998, 7.500000, 199.492004, + 72.600998, 0.000000, 199.492004, + 75.430000, 7.500000, 194.070999, + 75.430000, 0.000000, 194.070999, + 72.507004, 7.500000, 191.988998, + 61.186001, 7.500000, 183.785004, + 60.598000, 7.500000, 183.350998, + 60.598000, 0.000000, 183.350998, + 84.142998, 15.000000, 219.093994, + 84.142998, 0.000000, 219.093994, + 83.547997, 15.000000, 219.873001, + 83.547997, 0.000000, 219.873001, + 112.135002, 15.000000, 232.608002, + 112.135002, 0.000000, 232.608002, + 114.695999, 15.000000, 234.289001, + 114.695999, 0.000000, 234.289001, + 135.968002, 15.000000, 208.585999, + 135.968002, 0.000000, 208.585999, + 139.009995, 5.000000, 78.278999, + 139.009995, 0.000000, 78.278999, + 149.115005, 5.000000, 87.330002, + 149.115005, 0.000000, 87.330002, + 148.973999, 5.000000, 92.361000, + 148.973999, 0.000000, 92.361000, + 139.345001, 5.000000, 103.893997, + 139.345001, 0.000000, 103.893997, + 181.024994, 5.000000, 138.289993, + 181.024994, 0.000000, 138.289993, + 186.703003, 5.000000, 142.988007, + 186.703003, 0.000000, 142.988007, + 188.962997, 5.000000, 144.847000, + 188.962997, 0.000000, 144.847000, + 201.326996, 5.000000, 130.408997, + 201.326996, 0.000000, 130.408997, + 209.987000, 5.000000, 120.212997, + 209.987000, 0.000000, 120.212997, + 197.542007, 5.000000, 109.638000, + 197.542007, 0.000000, 109.638000, + 219.723007, 5.000000, 83.300003, + 219.723007, 0.000000, 83.300003, + 231.485992, 5.000000, 45.185001, + 231.485992, 0.000000, 45.185001, + 185.459000, 5.000000, 30.000999, + 185.459000, 0.000000, 30.000999, + 162.957001, 5.000000, 50.472000, + 162.957001, 0.000000, 50.472000, + 143.738007, 5.000000, 67.959999, + 143.738007, 0.000000, 67.959999, + 179.259995, 25.700001, 125.945000, + 179.259995, 0.000000, 125.945000, + 174.639008, 25.700001, 131.143997, + 174.639008, 0.000000, 131.143997, + 177.916000, 25.700001, 134.059998, + 177.916000, 0.000000, 134.059998, + 182.537003, 25.700001, 128.873001, + 182.537003, 0.000000, 128.873001, + 149.455994, 25.700001, 65.634003, + 149.455994, 0.000000, 65.634003, + 151.602005, 25.700001, 67.971001, + 151.602005, 0.000000, 67.971001, + 157.514008, 25.700001, 62.584000, + 157.514008, 0.000000, 62.584000, + 160.563004, 25.700001, 65.922997, + 160.563004, 0.000000, 65.922997, + 170.386002, 25.700001, 56.962002, + 170.386002, 0.000000, 56.962002, + 167.110001, 25.700001, 53.377998, + 167.110001, 0.000000, 53.377998, + 158.610001, 25.700001, 61.125000, + 158.610001, 0.000000, 61.125000, + 156.690994, 25.700001, 59.033001, + 156.690994, 0.000000, 59.033001, + 149.783005, 25.700001, 109.503998, + 149.783005, 0.000000, 109.503998, + 157.487000, 25.700001, 116.027000, + 157.487000, 0.000000, 116.027000, + 159.699997, 25.700001, 113.411003, + 159.699997, 0.000000, 113.411003, + 152.003006, 25.700001, 106.888000, + 152.003006, 0.000000, 106.888000, + 134.770996, 25.700001, 91.047997, + 134.770996, 0.000000, 91.047997, + 134.436005, 25.700001, 92.750999, + 134.436005, 0.000000, 92.750999, + 135.057999, 25.700001, 92.940002, + 135.057999, 0.000000, 92.940002, + 135.393005, 25.700001, 95.010002, + 135.393005, 0.000000, 95.010002, + 138.669006, 25.700001, 96.580002, + 138.669006, 0.000000, 96.580002, + 142.988998, 25.700001, 92.584000, + 142.988998, 0.000000, 92.584000, + 142.761993, 25.700001, 90.179001, + 142.761993, 0.000000, 90.179001, + 143.190002, 25.700001, 89.901001, + 143.190002, 0.000000, 89.901001, + 142.794998, 25.700001, 86.706001, + 142.794998, 0.000000, 86.706001, + 139.632004, 25.700001, 85.526001, + 139.632004, 0.000000, 85.526001, + 137.339005, 25.700001, 87.061996, + 137.339005, 0.000000, 87.061996, + 137.445999, 25.700001, 87.462997, + 137.445999, 0.000000, 87.462997, + 135.787003, 25.700001, 88.844002, + 135.787003, 0.000000, 88.844002, + 134.436005, 25.700001, 88.276001, + 134.436005, 0.000000, 88.276001, + 132.095993, 25.700001, 87.274002, + 132.095993, 0.000000, 87.274002, + 131.145996, 25.700001, 89.511002, + 131.145996, 0.000000, 89.511002, + 133.447006, 25.700001, 90.490997, + 133.447006, 0.000000, 90.490997, + 219.423004, 31.700001, 109.102997, + 219.423004, 5.000000, 109.102997, + 194.766998, 31.700001, 88.164001, + 194.766998, 5.000000, 88.164001, + 176.671997, 31.700001, 109.459000, + 176.671997, 5.000000, 109.459000, + 201.326996, 31.700001, 130.408997, + 209.987000, 31.700001, 120.212997, + 203.688004, 7.500000, 157.003006, + 203.688004, 0.000000, 157.003006, + 206.791000, 7.500000, 152.951004, + 206.791000, 0.000000, 152.951004, + 210.983002, 7.500000, 147.462997, + 210.983002, 0.000000, 147.462997, + 216.820999, 7.500000, 139.837997, + 216.820999, 0.000000, 139.837997, + 217.350006, 7.500000, 139.147995, + 217.350006, 0.000000, 139.147995, + 230.529999, 7.500000, 121.916000, + 230.529999, 0.000000, 121.916000, + 232.602997, 7.500000, 119.154999, + 232.602997, 0.000000, 119.154999, + 223.789001, 7.500000, 111.418999, + 223.789001, 0.000000, 111.418999, + 234.589005, 7.500000, 99.107002, + 234.589005, 0.000000, 99.107002, + 239.289993, 7.500000, 93.752998, + 239.289993, 0.000000, 93.752998, + 249.274002, 7.500000, 85.927002, + 249.274002, 0.000000, 85.927002, + 245.863007, 7.500000, 81.573997, + 245.863007, 0.000000, 81.573997, + 238.360001, 7.500000, 78.668999, + 238.360001, 0.000000, 78.668999, + 240.927994, 7.500000, 71.845001, + 240.927994, 0.000000, 71.845001, + 248.089996, 7.500000, 52.787998, + 248.089996, 0.000000, 52.787998, + 248.819000, 7.500000, 50.905998, + 248.819000, 0.000000, 50.905998, + 239.511002, 7.500000, 47.834000, + 239.511002, 0.000000, 47.834000, + 231.485992, 7.500000, 45.185001, + 219.723007, 7.500000, 83.300003, + 206.928619, 7.500000, 98.492203, + 206.928619, 0.000000, 98.492203, + 219.423004, 7.500000, 109.102997, + 219.423004, 0.000000, 109.102997, + 209.987000, 7.500000, 120.212997, + 201.326996, 7.500000, 130.408997, + 188.962997, 7.500000, 144.847000, + 197.007004, 7.500000, 151.492996, + 197.007004, 0.000000, 151.492996, + 198.966995, 7.500000, 153.106995, + 198.966995, 0.000000, 153.106995, + 139.345001, 7.500000, 103.893997, + 148.973999, 7.500000, 92.361000, + 149.115005, 7.500000, 87.330002, + 139.009995, 7.500000, 78.278999, + 135.332001, 7.500000, 86.317001, + 135.332001, 0.000000, 86.317001, + 134.436005, 7.500000, 88.276001, + 135.787003, 7.500000, 88.844002, + 137.445999, 7.500000, 87.462997, + 137.339005, 7.500000, 87.061996, + 139.632004, 7.500000, 85.526001, + 142.794998, 7.500000, 86.706001, + 143.190002, 7.500000, 89.901001, + 142.761993, 7.500000, 90.179001, + 142.988998, 7.500000, 92.584000, + 138.669006, 7.500000, 96.580002, + 135.393005, 7.500000, 95.010002, + 135.057999, 7.500000, 92.940002, + 134.436005, 7.500000, 92.750999, + 134.770996, 7.500000, 91.047997, + 133.447006, 7.500000, 90.490997, + 130.658005, 7.500000, 96.747002, + 130.658005, 0.000000, 96.747002, + 133.514008, 7.500000, 99.096001, + 133.514008, 0.000000, 99.096001, + 135.298996, 7.500000, 100.554001, + 135.298996, 0.000000, 100.554001, + 114.421997, 21.299999, 118.820999, + 114.421997, 0.000000, 118.820999, + 120.058998, 21.299999, 124.231003, + 120.058998, 0.000000, 124.231003, + 121.616997, 21.299999, 125.790001, + 121.616997, 0.000000, 125.790001, + 124.378998, 21.299999, 128.572998, + 124.378998, 0.000000, 128.572998, + 125.275002, 21.299999, 127.625999, + 125.275002, 0.000000, 127.625999, + 132.089005, 21.299999, 120.490997, + 132.089005, 0.000000, 120.490997, + 127.615997, 21.299999, 116.349998, + 127.615997, 0.000000, 116.349998, + 126.332001, 21.299999, 115.158997, + 126.332001, 0.000000, 115.158997, + 124.686996, 21.299999, 113.634003, + 124.686996, 0.000000, 113.634003, + 121.917999, 21.299999, 111.061996, + 121.917999, 0.000000, 111.061996, + 156.423996, 20.000000, 174.044998, + 156.423996, 0.000000, 174.044998, + 134.229004, 20.000000, 156.914001, + 134.229004, 0.000000, 156.914001, + 121.042000, 20.000000, 172.419998, + 121.042000, 0.000000, 172.419998, + 136.294998, 20.000000, 187.970993, + 136.294998, 0.000000, 187.970993, + 141.979004, 20.000000, 193.770004, + 141.979004, 0.000000, 193.770004, + 125.275002, 20.000000, 127.625999, + 133.968002, 20.000000, 135.774994, + 133.968002, 0.000000, 135.774994, + 135.893997, 20.000000, 137.578003, + 135.893997, 0.000000, 137.578003, + 144.205994, 20.000000, 145.192001, + 144.205994, 0.000000, 145.192001, + 150.753006, 20.000000, 137.556000, + 150.753006, 0.000000, 137.556000, + 142.654999, 20.000000, 130.153000, + 142.654999, 0.000000, 130.153000, + 132.089005, 20.000000, 120.490997, + 161.526001, 20.000000, 167.076996, + 161.526001, 0.000000, 167.076996, + 171.362000, 20.000000, 153.507004, + 171.362000, 0.000000, 153.507004, + 164.962997, 20.000000, 148.554001, + 164.962997, 0.000000, 148.554001, + 141.992996, 20.000000, 147.796997, + 141.992996, 0.000000, 147.796997, + 136.195007, 20.000000, 154.598007, + 136.195007, 0.000000, 154.598007, + 147.910995, 20.000000, 198.824005, + 147.910995, 0.000000, 198.824005, + 153.233994, 20.000000, 203.509995, + 153.233994, 0.000000, 203.509995, + 164.408005, 20.000000, 187.136002, + 164.408005, 0.000000, 187.136002, + 164.802002, 20.000000, 186.567993, + 164.802002, 0.000000, 186.567993, + 180.591003, 20.000000, 160.843002, + 180.591003, 0.000000, 160.843002, + 175.388000, 20.000000, 156.712997, + 175.388000, 0.000000, 156.712997, + 166.695007, 20.000000, 170.561005, + 166.695007, 0.000000, 170.561005, + 158.970993, 20.000000, 182.895004, + 158.970993, 0.000000, 182.895004, + 173.207993, 20.000000, 154.977005, + 173.207993, 0.000000, 154.977005, + 115.852997, 7.500000, 141.328995, + 115.852997, 0.000000, 141.328995, + 119.150002, 7.500000, 138.167999, + 119.150002, 0.000000, 138.167999, + 118.126999, 7.500000, 137.009995, + 118.126999, 0.000000, 137.009995, + 122.907997, 7.500000, 132.412994, + 122.907997, 0.000000, 132.412994, + 122.166000, 7.500000, 131.432999, + 122.166000, 0.000000, 131.432999, + 124.378998, 7.500000, 128.572998, + 121.616997, 7.500000, 125.790001, + 120.058998, 7.500000, 124.231003, + 116.555000, 7.500000, 128.317001, + 116.555000, 0.000000, 128.317001, + 117.344002, 7.500000, 129.018005, + 117.344002, 0.000000, 129.018005, + 113.887001, 7.500000, 131.712006, + 113.887001, 0.000000, 131.712006, + 108.102997, 7.500000, 136.542999, + 108.102997, 0.000000, 136.542999, + 98.513000, 7.500000, 146.037994, + 98.513000, 0.000000, 146.037994, + 98.774002, 7.500000, 146.261002, + 98.774002, 0.000000, 146.261002, + 97.824997, 7.500000, 147.541000, + 97.824997, 0.000000, 147.541000, + 103.334999, 7.500000, 153.496002, + 103.334999, 0.000000, 153.496002, + 111.459999, 21.299999, 129.317993, + 111.459999, 0.000000, 129.317993, + 107.781998, 21.299999, 125.689003, + 107.781998, 0.000000, 125.689003, + 91.967003, 21.299999, 141.819000, + 91.967003, 0.000000, 141.819000, + 97.824997, 21.299999, 147.541000, + 98.774002, 21.299999, 146.261002, + 98.513000, 21.299999, 146.037994, + 108.102997, 21.299999, 136.542999, + 113.887001, 21.299999, 131.712006, + 175.007004, 10.000000, -8.582000, + 175.007004, 0.000000, -8.582000, + 172.371994, 10.000000, -10.542000, + 172.371994, 0.000000, -10.542000, + 174.438995, 10.000000, -13.325000, + 174.438995, 0.000000, -13.325000, + 176.906006, 10.000000, -11.488000, + 176.906006, 0.000000, -11.488000, + 183.145004, 10.000000, -21.073000, + 183.145004, 0.000000, -21.073000, + 179.179993, 10.000000, -22.097000, + 179.179993, 0.000000, -22.097000, + 177.274002, 10.000000, -22.587000, + 177.274002, 0.000000, -22.587000, + 164.990005, 10.000000, -3.863000, + 164.990005, 0.000000, -3.863000, + 167.016006, 10.000000, -2.159000, + 167.016006, 0.000000, -2.159000, + 169.477005, 10.000000, -0.089000, + 169.477005, 0.000000, -0.089000, + 174.171005, 10.000000, -23.377001, + 174.171005, 0.000000, -23.377001, + 169.537003, 10.000000, -16.464001, + 169.537003, 0.000000, -16.464001, + 167.817993, 10.000000, -13.503000, + 167.817993, 0.000000, -13.503000, + 162.268005, 10.000000, -6.156000, + 162.268005, 0.000000, -6.156000, + 171.589996, 10.000000, 1.681000, + 171.589996, 0.000000, 1.681000, + 173.917007, 10.000000, 3.652000, + 173.917007, 0.000000, 3.652000, + 187.686005, 10.000000, -19.903999, + 187.686005, 0.000000, -19.903999, + 184.817001, 10.000000, -20.650000, + 184.817001, 0.000000, -20.650000, + 178.884995, 10.000000, -10.019000, + 178.884995, 0.000000, -10.019000, + 176.819000, 10.000000, -7.236000, + 176.819000, 0.000000, -7.236000, + 176.524994, 10.000000, 5.833000, + 176.524994, 0.000000, 5.833000, + 179.199997, 10.000000, 8.093000, + 179.199997, 0.000000, 8.093000, + 184.242004, 10.000000, -2.115000, + 184.242004, 0.000000, -2.115000, + 181.813995, 10.000000, -3.740000, + 181.813995, 0.000000, -3.740000, + 185.091003, 10.000000, -9.006000, + 185.091003, 0.000000, -9.006000, + 187.057007, 10.000000, -7.826000, + 187.057007, 0.000000, -7.826000, + 192.427002, 10.000000, -18.690001, + 192.427002, 0.000000, -18.690001, + 189.431000, 10.000000, -19.458000, + 189.431000, 0.000000, -19.458000, + 158.776993, 10.000000, -62.071999, + 158.776993, 0.000000, -62.071999, + 152.684998, 10.000000, -42.445999, + 152.684998, 0.000000, -42.445999, + 159.132004, 10.000000, -46.242001, + 159.132004, 0.000000, -46.242001, + 164.100006, 10.000000, -45.084000, + 164.100006, 0.000000, -45.084000, + 155.548004, 10.000000, -36.958000, + 155.548004, 0.000000, -36.958000, + 164.554993, 10.000000, -34.442001, + 164.554993, 0.000000, -34.442001, + 172.065002, 10.000000, -42.825001, + 172.065002, 0.000000, -42.825001, + 191.584000, 10.000000, -37.192001, + 191.584000, 0.000000, -37.192001, + 183.371994, 10.000000, -29.021000, + 183.371994, 0.000000, -29.021000, + 188.654999, 10.000000, -27.596001, + 188.654999, 0.000000, -27.596001, + 192.253006, 10.000000, -26.627001, + 192.253006, 0.000000, -26.627001, + 199.796005, 10.000000, -34.609001, + 199.796005, 0.000000, -34.609001, + 206.710007, 10.000000, -32.672001, + 206.710007, 0.000000, -32.672001, + 215.470001, 10.000000, -19.903999, + 215.470001, 0.000000, -19.903999, + 218.587006, 10.000000, -18.846001, + 218.587006, 0.000000, -18.846001, + 220.854004, 10.000000, -25.903999, + 220.854004, 0.000000, -25.903999, + 226.182999, 10.000000, -41.789001, + 226.182999, 0.000000, -41.789001, + 215.470001, 4.000000, -19.903999, + 206.710007, 4.000000, -32.672001, + 199.796005, 4.000000, -34.609001, + 192.253006, 4.000000, -26.627001, + 183.371994, 4.000000, -29.021000, + 191.584000, 4.000000, -37.192001, + 172.065002, 4.000000, -42.825001, + 164.554993, 4.000000, -34.442001, + 155.548004, 4.000000, -36.958000, + 164.100006, 4.000000, -45.084000, + 159.132004, 4.000000, -46.242001, + 152.684998, 4.000000, -42.445999, + 151.522003, 4.000000, -38.227001, + 151.522003, 0.000000, -38.227001, + 153.701996, 4.000000, -37.536999, + 153.701996, 0.000000, -37.536999, + 187.117004, 10.000000, 4.019000, + 187.117004, 0.000000, 4.019000, + 185.766006, 10.000000, 3.329000, + 185.766006, 0.000000, 3.329000, + 187.759003, 10.000000, -0.567000, + 187.759003, 0.000000, -0.567000, + 189.076996, 10.000000, 0.112000, + 189.076996, 0.000000, 0.112000, + 190.681000, 10.000000, -3.306000, + 190.681000, 0.000000, -3.306000, + 189.684998, 10.000000, -3.751000, + 189.684998, 0.000000, -3.751000, + 191.404007, 10.000000, -7.569000, + 191.404007, 0.000000, -7.569000, + 192.487000, 10.000000, -7.080000, + 192.487000, 0.000000, -7.080000, + 197.481995, 10.000000, -17.388000, + 197.481995, 0.000000, -17.388000, + 195.035004, 10.000000, -18.011000, + 195.035004, 0.000000, -18.011000, + 181.828003, 10.000000, 9.874000, + 181.828003, 0.000000, 9.874000, + 183.660004, 10.000000, 11.121000, + 183.660004, 0.000000, 11.121000, + 188.587997, 10.000000, 1.069000, + 188.587997, 0.000000, 1.069000, + 189.557999, 10.000000, 1.559000, + 189.557999, 0.000000, 1.559000, + 188.052994, 10.000000, 4.498000, + 188.052994, 0.000000, 4.498000, + 187.270996, 10.000000, 13.570000, + 187.270996, 0.000000, 13.570000, + 188.173996, 10.000000, 11.733000, + 188.173996, 0.000000, 11.733000, + 191.464005, 10.000000, 12.980000, + 191.464005, 0.000000, 12.980000, + 196.707001, 10.000000, 14.962000, + 196.707001, 0.000000, 14.962000, + 208.227997, 10.000000, -13.592000, + 208.227997, 0.000000, -13.592000, + 203.440002, 10.000000, -15.284000, + 203.440002, 0.000000, -15.284000, + 193.757996, 10.000000, -6.512000, + 193.757996, 0.000000, -6.512000, + 192.500000, 10.000000, -3.718000, + 192.500000, 0.000000, -3.718000, + 191.143005, 10.000000, -4.330000, + 191.143005, 0.000000, -4.330000, + 84.931999, 23.600000, -60.869999, + 84.931999, 0.000000, -60.869999, + 89.839996, 23.600000, -81.052002, + 89.839996, 0.000000, -81.052002, + 74.834000, 23.600000, -83.579002, + 74.834000, 0.000000, -83.579002, + 70.380997, 23.600000, -64.431999, + 70.380997, 0.000000, -64.431999, + 144.580994, 10.000000, -50.627998, + 144.580994, 0.000000, -50.627998, + 148.966995, 10.000000, -65.055000, + 148.966995, 0.000000, -65.055000, + 135.653000, 10.000000, -69.107002, + 135.653000, 0.000000, -69.107002, + 131.574005, 10.000000, -54.390999, + 131.574005, 0.000000, -54.390999, + 142.541000, 10.000000, -51.217999, + 142.541000, 0.000000, -51.217999, + 122.373001, 23.600000, -73.137001, + 122.373001, 0.000000, -73.137001, + 117.323997, 23.600000, -52.387001, + 117.323997, 0.000000, -52.387001, + 129.701996, 23.600000, -47.344002, + 129.701996, 0.000000, -47.344002, + 131.574005, 23.600000, -54.390999, + 135.653000, 23.600000, -69.107002, + 84.792000, 23.600000, -60.313000, + 84.792000, 0.000000, -60.313000, + 157.473007, 10.000000, -27.930000, + 157.473007, 0.000000, -27.930000, + 149.776993, 10.000000, -30.134001, + 149.776993, 0.000000, -30.134001, + 146.947998, 10.000000, -30.947001, + 146.947998, 0.000000, -30.947001, + 145.302994, 10.000000, -28.141001, + 145.302994, 0.000000, -28.141001, + 141.865997, 10.000000, -24.312000, + 141.865997, 0.000000, -24.312000, + 141.505005, 10.000000, -41.321999, + 141.505005, 0.000000, -41.321999, + 143.798004, 10.000000, -40.609001, + 143.798004, 0.000000, -40.609001, + 151.522003, 10.000000, -38.227001, + 156.998993, 10.000000, -62.605999, + 156.998993, 0.000000, -62.605999, + -76.514000, 7.500000, -137.537003, + -76.514000, 0.000000, -137.537003, + -86.498001, 7.500000, -143.248001, + -86.498001, 0.000000, -143.248001, + -94.502998, 7.500000, -130.656998, + -94.502998, 0.000000, -130.656998, + -87.040001, 7.500000, -125.759003, + -87.040001, 0.000000, -125.759003, + -89.902000, 7.500000, -120.816002, + -89.902000, 0.000000, -120.816002, + -84.685997, 7.500000, -116.998001, + -84.685997, 0.000000, -116.998001, + -70.917000, 7.500000, -110.362999, + -70.917000, 0.000000, -110.362999, + -70.014000, 7.500000, -109.929001, + -70.014000, 0.000000, -109.929001, + -64.851997, 7.500000, -121.750999, + -64.851997, 0.000000, -121.750999, + -79.268997, 7.500000, -127.561996, + -79.268997, 0.000000, -127.561996, + -78.921997, 7.500000, -128.285995, + -78.921997, 0.000000, -128.285995, + -81.369003, 7.500000, -129.856003, + -81.369003, 0.000000, -129.856003, + -111.099998, 7.500000, -167.884003, + -111.099998, 0.000000, -167.884003, + -124.320000, 7.500000, -178.826996, + -124.320000, 0.000000, -178.826996, + -135.279999, 7.500000, -164.899994, + -135.279999, 0.000000, -164.899994, + -121.196999, 7.500000, -154.001999, + -121.196999, 0.000000, -154.001999, + -75.277000, 7.500000, -165.656998, + -75.277000, 0.000000, -165.656998, + -99.657997, 7.500000, -179.406006, + -99.657997, 0.000000, -179.406006, + -108.491997, 7.500000, -165.957993, + -108.491997, 0.000000, -165.957993, + -82.620003, 7.500000, -151.718994, + -82.620003, 0.000000, -151.718994, + -51.898998, 7.500000, -152.488007, + -51.898998, 0.000000, -152.488007, + -58.411999, 7.500000, -141.087997, + -58.411999, 0.000000, -141.087997, + -48.862999, 7.500000, -135.733994, + -48.862999, 0.000000, -135.733994, + -40.931999, 7.500000, -130.869003, + -34.405998, 7.500000, -142.623993, + -115.634003, 7.500000, -189.826004, + -115.634003, 0.000000, -189.826004, + -91.721001, 7.500000, -116.775002, + -91.721001, 0.000000, -116.775002, + -92.836998, 7.500000, -112.623001, + -92.836998, 0.000000, -112.623001, + -82.264999, 7.500000, -151.552994, + -82.264999, 0.000000, -151.552994, + -86.939003, 7.500000, -143.537003, + -86.939003, 0.000000, -143.537003, + -70.703003, 7.500000, -147.434006, + -70.703003, 0.000000, -147.434006, + -115.580002, 7.500000, -113.580002, + -115.580002, 0.000000, -113.580002, + -115.527000, 7.500000, -110.852997, + -115.527000, 0.000000, -110.852997, + -115.259003, 7.500000, -96.625999, + -115.259003, 0.000000, -96.625999, + -105.830002, 7.500000, -96.804001, + -105.830002, 0.000000, -96.804001, + -106.105003, 7.500000, -111.053001, + -106.105003, 0.000000, -111.053001, + -106.151001, 7.500000, -113.758003, + -106.151001, 0.000000, -113.758003, + -123.711998, 7.500000, -110.685997, + -123.711998, 0.000000, -110.685997, + -123.444000, 7.500000, -96.470001, + -123.444000, 0.000000, -96.470001, + -123.764999, 7.500000, -113.425003, + -123.764999, 0.000000, -113.425003, + -137.520996, 7.500000, -110.407997, + -137.520996, 0.000000, -110.407997, + -148.889008, 7.500000, -104.819000, + -148.889008, 0.000000, -104.819000, + -145.839005, 7.500000, -96.213997, + -145.839005, 0.000000, -96.213997, + -135.548004, 7.500000, -113.525002, + -135.548004, 0.000000, -113.525002, + -134.692001, 7.500000, -111.865997, + -134.692001, 0.000000, -111.865997, + -144.248001, 7.500000, -130.311996, + -144.248001, 0.000000, -130.311996, + -146.667999, 7.500000, -128.431000, + -146.667999, 0.000000, -128.431000, + -151.582993, 7.500000, -125.191002, + -151.582993, 0.000000, -125.191002, + -158.423996, 7.500000, -120.682999, + -158.423996, 0.000000, -120.682999, + -156.591995, 7.500000, -117.109001, + -156.591995, 0.000000, -117.109001, + -155.561996, 7.500000, -117.487999, + -155.561996, 0.000000, -117.487999, + -129.182007, 7.500000, -149.348007, + -129.182007, 0.000000, -149.348007, + -139.380005, 7.500000, -158.744003, + -139.380005, 0.000000, -158.744003, + -150.580002, 7.500000, -146.598999, + -150.580002, 0.000000, -146.598999, + -140.522995, 7.500000, -137.337006, + -140.522995, 0.000000, -137.337006, + -138.156006, 7.500000, -135.154999, + -138.156006, 0.000000, -135.154999, + -126.961998, 7.500000, -147.300003, + -126.961998, 0.000000, -147.300003, + -159.781998, 7.500000, -136.735001, + -159.781998, 0.000000, -136.735001, + -163.065002, 7.500000, -134.320007, + -163.065002, 0.000000, -134.320007, + -162.503006, 7.500000, -133.440002, + -162.503006, 0.000000, -133.440002, + -160.309998, 7.500000, -130.011993, + -160.309998, 0.000000, -130.011993, + -163.378998, 7.500000, -127.417999, + -163.378998, 0.000000, -127.417999, + -180.345001, 5.000000, -152.910995, + -170.567993, 5.000000, -141.744995, + -170.567993, 0.000000, -141.744995, + -160.363998, 5.000000, -150.039001, + -160.363998, 0.000000, -150.039001, + -154.332001, 5.000000, -156.216995, + -154.332001, 0.000000, -156.216995, + -176.138000, 5.000000, -186.352005, + -176.138000, 0.000000, -186.352005, + -181.514999, 5.000000, -190.983002, + -181.514999, 0.000000, -190.983002, + -189.613007, 5.000000, -180.485001, + -189.613007, 0.000000, -180.485001, + -197.209000, 5.000000, -187.955002, + -197.209000, 0.000000, -187.955002, + -206.317001, 5.000000, -177.257004, + -206.317001, 0.000000, -177.257004, + -194.735001, 5.000000, -167.727997, + 117.344002, 21.299999, 129.018005, + 116.555000, 21.299999, 128.317001, + -79.209000, 15.000000, 76.053001, + -69.198997, 15.000000, 79.771004, + -67.894997, 15.000000, 75.830002, + -67.894997, 0.000000, 75.830002, + -63.555000, 15.000000, 62.738998, + -63.555000, 0.000000, 62.738998, + -173.785004, 7.500000, -123.577003, + -173.785004, 0.000000, -123.577003, + -191.197998, 7.500000, -114.670998, + -191.197998, 0.000000, -114.670998, + -186.462997, 7.500000, -106.667000, + -186.462997, 0.000000, -106.667000, + -184.322998, 7.500000, -108.304001, + -184.322998, 0.000000, -108.304001, + -212.408997, 24.000000, -166.313995, + -212.408997, 0.000000, -166.313995, + -229.421005, 24.000000, -146.087006, + -229.421005, 0.000000, -146.087006, + -222.453003, 24.000000, -138.917007, + -222.453003, 0.000000, -138.917007, + -223.067993, 24.000000, -138.326996, + -223.067993, 0.000000, -138.326996, + -216.649002, 24.000000, -132.104004, + -216.649002, 0.000000, -132.104004, + -217.384003, 24.000000, -131.503006, + -217.384003, 0.000000, -131.503006, + -207.942001, 24.000000, -121.763000, + -207.942001, 0.000000, -121.763000, + -208.464005, 24.000000, -121.238998, + -208.464005, 0.000000, -121.238998, + -206.169998, 24.000000, -118.412003, + -206.169998, 0.000000, -118.412003, + -197.095993, 24.000000, -124.178001, + -197.095993, 0.000000, -124.178001, + -196.119003, 24.000000, -122.931000, + -196.119003, 0.000000, -122.931000, + -185.820999, 24.000000, -128.563995, + -185.820999, 0.000000, -128.563995, + -180.798996, 24.000000, -133.229004, + -180.798996, 0.000000, -133.229004, + -309.058014, 7.500000, -228.121002, + -309.058014, 0.000000, -228.121002, + -317.830994, 7.500000, -213.748993, + -317.830994, 0.000000, -213.748993, + -316.066010, 7.500000, -212.591003, + -316.066010, 0.000000, -212.591003, + -316.975006, 7.500000, -211.255005, + -316.975006, 0.000000, -211.255005, + -317.276001, 7.500000, -211.455994, + -317.276001, 0.000000, -211.455994, + -320.212006, 7.500000, -206.423996, + -320.212006, 0.000000, -206.423996, + -315.898010, 7.500000, -203.695999, + -315.898010, 0.000000, -203.695999, + -316.787994, 7.500000, -202.093002, + -316.787994, 0.000000, -202.093002, + -316.467010, 7.500000, -200.156006, + -316.467010, 0.000000, -200.156006, + -314.200012, 7.500000, -198.776001, + -314.200012, 0.000000, -198.776001, + -312.354004, 7.500000, -199.320999, + -312.354004, 0.000000, -199.320999, + -310.601990, 7.500000, -198.218994, + -310.601990, 0.000000, -198.218994, + -309.645996, 7.500000, -199.977997, + -309.645996, 0.000000, -199.977997, + -289.638000, 7.500000, -188.000000, + -289.638000, 0.000000, -188.000000, + -294.058014, 7.500000, -180.473999, + -294.058014, 0.000000, -180.473999, + -284.261993, 7.500000, -174.985992, + -284.261993, 0.000000, -174.985992, + -283.485992, 7.500000, -174.751999, + -283.485992, 0.000000, -174.751999, + -282.596985, 7.500000, -174.929993, + -282.596985, 0.000000, -174.929993, + -281.881012, 7.500000, -175.498001, + -281.881012, 0.000000, -175.498001, + -281.440002, 7.500000, -176.289001, + -281.440002, 0.000000, -176.289001, + -281.406006, 7.500000, -177.190002, + -281.406006, 0.000000, -177.190002, + -281.634003, 7.500000, -177.936005, + -281.634003, 0.000000, -177.936005, + -282.209015, 7.500000, -178.470001, + -282.209015, 0.000000, -178.470001, + -279.380005, 7.500000, -183.268997, + -279.380005, 0.000000, -183.268997, + -271.135010, 7.500000, -178.660004, + -271.135010, 0.000000, -178.660004, + -274.036987, 7.500000, -173.393997, + -274.036987, 0.000000, -173.393997, + -274.867004, 7.500000, -173.550003, + -274.867004, 0.000000, -173.550003, + -275.716003, 7.500000, -173.350006, + -275.716003, 0.000000, -173.350006, + -276.324005, 7.500000, -172.714996, + -276.324005, 0.000000, -172.714996, + -276.605011, 7.500000, -171.979996, + -276.605011, 0.000000, -171.979996, + -276.592010, 7.500000, -170.990005, + -276.592010, 0.000000, -170.990005, + -276.230988, 7.500000, -170.455002, + -276.230988, 0.000000, -170.455002, + -275.835999, 7.500000, -170.121002, + -275.835999, 0.000000, -170.121002, + -265.778992, 7.500000, -164.031998, + -265.778992, 0.000000, -164.031998, + -256.216003, 7.500000, -180.774994, + -256.216003, 0.000000, -180.774994, + -234.229004, 7.500000, -163.830994, + -234.229004, 0.000000, -163.830994, + -260.615997, 7.500000, -132.460999, + -260.615997, 0.000000, -132.460999, + -262.066986, 7.500000, -133.695999, + -262.066986, 0.000000, -133.695999, + -273.315002, 7.500000, -120.515999, + -273.315002, 0.000000, -120.515999, + -257.205994, 7.500000, -106.766998, + -257.205994, 0.000000, -106.766998, + -245.964996, 7.500000, -119.947998, + -245.964996, 0.000000, -119.947998, + -249.134995, 7.500000, -122.653000, + -249.134995, 0.000000, -122.653000, + -229.421005, 7.500000, -146.087006, + -212.408997, 7.500000, -166.313995, + -223.970993, 7.500000, -176.033005, + -223.970993, 0.000000, -176.033005, + -248.365997, 7.500000, -194.089005, + -248.365997, 0.000000, -194.089005, + -276.089996, 7.500000, -209.975006, + -276.089996, 0.000000, -209.975006, + -308.108002, 7.500000, -228.231995, + -308.108002, 0.000000, -228.231995, + -308.596008, 7.500000, -228.332993, + -308.596008, 0.000000, -228.332993, + 101.602997, 5.000000, 115.482002, + 101.602997, 4.700000, 115.482002, + 96.160004, 5.000000, 110.405998, + 96.160004, 4.700000, 110.405998, + 93.318001, 4.700000, 113.432999, + 98.767998, 4.700000, 118.510002, + 101.602997, 0.000000, 115.482002, + 114.750000, 5.000000, 101.400002, + 114.750000, 0.000000, 101.400002, + 109.306000, 5.000000, 96.313004, + 109.306000, 0.000000, 96.313004, + 96.160004, 0.000000, 110.405998, + -71.324997, 15.000000, 17.767000, + -71.324997, 0.000000, 17.767000, + -78.292999, 15.000000, 7.871000, + -62.993000, 15.000000, 122.361000, + -62.993000, 0.000000, 122.361000, + -53.563999, 15.000000, 113.055000, + -54.146000, 15.000000, 112.498001, + -58.779999, 15.000000, 108.045998, + -58.779999, 0.000000, 108.045998, + -51.537998, 7.500000, 96.469002, + -51.537998, 0.000000, 96.469002, + -50.575001, 7.500000, 92.773003, + -47.578999, 7.500000, 82.698997, + -50.067001, 7.500000, 81.852997, + -50.067001, 0.000000, 81.852997, + -58.779999, 7.500000, 108.045998, + -65.554001, 15.000000, 76.598999, + -65.554001, 0.000000, 76.598999, + -50.067001, 15.000000, 81.852997, + -65.554001, 7.500000, 76.598999, + -67.894997, 7.500000, 75.830002, + -73.905998, 7.500000, 93.508003, + -28.722000, 22.000000, 92.338997, + -22.235001, 22.000000, 78.068001, + -29.025999, 22.000000, 75.285004, + -29.025999, 0.000000, 75.285004, + -35.817001, 22.000000, 72.501999, + -42.283001, 22.000000, 86.683998, + -35.502499, 22.000000, 89.511497, + -35.502499, 0.000000, 89.511497, + -28.722000, 22.002426, 92.338997, + -22.235001, 22.004669, 78.068001, + -29.025999, 26.700001, 75.285004, + -35.817001, 22.008108, 72.501999, + -35.502499, 26.700001, 89.511497, + 130.973007, 21.299999, 150.524002, + 130.973007, 0.000000, 150.524002, + 128.572006, 21.299999, 153.307007, + 128.572006, 0.000000, 153.307007, + 123.696999, 21.299999, 149.311005, + 123.696999, 0.000000, 149.311005, + 115.852997, 21.299999, 141.328995, + 103.334999, 21.299999, 153.496002, + 109.947998, 21.299999, 160.074997, + 109.947998, 0.000000, 160.074997, + 111.105003, 21.299999, 161.222000, + 111.105003, 0.000000, 161.222000, + 121.042000, 21.299999, 172.419998, + 134.229004, 21.299999, 156.914001, + 136.195007, 21.299999, 154.598007, + 124.378998, 20.000000, 128.572998, + 122.166000, 20.000000, 131.432999, + 122.907997, 20.000000, 132.412994, + 118.126999, 20.000000, 137.009995, + 119.150002, 20.000000, 138.167999, + 115.852997, 20.000000, 141.328995, + 123.696999, 20.000000, 149.311005, + 128.572006, 20.000000, 153.307007, + 130.973007, 20.000000, 150.524002, + 99.677002, 6.500000, 171.440002, + 95.705002, 6.500000, 167.210007, + 85.139000, 6.500000, 179.565994, + 83.167000, 6.500000, 182.416000, + 83.167000, 0.000000, 182.416000, + 88.167999, 6.500000, 187.358002, + 188.983002, 20.000000, 201.628998, + 188.983002, 0.000000, 201.628998, + 204.871002, 20.000000, 175.414001, + 204.871002, 0.000000, 175.414001, + 195.770004, 20.000000, 169.537003, + 195.770004, 0.000000, 169.537003, + 195.048004, 20.000000, 170.783997, + 195.048004, 0.000000, 170.783997, + 176.852997, 20.000000, 221.643005, + 176.852997, 0.000000, 221.643005, + 204.871002, 7.500000, 175.414001, + 188.983002, 7.500000, 201.628998, + 176.852997, 7.500000, 221.643005, + 189.216995, 7.500000, 231.716995, + 189.216995, 0.000000, 231.716995, + 188.869003, 7.500000, 231.884003, + 188.869003, 0.000000, 231.884003, + 191.651001, 7.500000, 233.977005, + 191.651001, 0.000000, 233.977005, + 192.173004, 7.500000, 233.276001, + 192.173004, 0.000000, 233.276001, + 214.889008, 7.500000, 253.167007, + 214.889008, 0.000000, 253.167007, + 216.533997, 7.500000, 254.615005, + 216.533997, 0.000000, 254.615005, + 218.399002, 7.500000, 256.239990, + 218.399002, 0.000000, 256.239990, + 220.164993, 7.500000, 257.786987, + 220.164993, 0.000000, 257.786987, + 234.802994, 7.500000, 270.609985, + 234.802994, 0.000000, 270.609985, + 248.076996, 7.500000, 282.243011, + 248.076996, 0.000000, 282.243011, + 258.287994, 7.500000, 268.628998, + 258.287994, 0.000000, 268.628998, + 280.950012, 7.500000, 230.949005, + 280.950012, 0.000000, 230.949005, + 275.941986, 7.500000, 227.153000, + 275.941986, 0.000000, 227.153000, + 232.375000, 7.500000, 194.149002, + 232.375000, 0.000000, 194.149002, + 220.886993, 7.500000, 186.345001, + 220.886993, 0.000000, 186.345001, + 173.656006, 24.000000, -177.580002, + 173.656006, 0.000000, -177.580002, + 181.820999, 24.000000, -183.869995, + 181.820999, 0.000000, -183.869995, + 182.582993, 24.000000, -184.460007, + 182.582993, 0.000000, -184.460007, + 182.121994, 24.000000, -185.050003, + 182.121994, 0.000000, -185.050003, + 173.214996, 24.000000, -196.615997, + 173.214996, 0.000000, -196.615997, + 170.699997, 24.000000, -199.878006, + 170.699997, 0.000000, -199.878006, + 169.878006, 24.000000, -200.947006, + 169.878006, 0.000000, -200.947006, + 160.951004, 24.000000, -194.078003, + 160.951004, 0.000000, -194.078003, + 161.705994, 24.000000, -193.098007, + 161.705994, 0.000000, -193.098007, + 164.013000, 24.000000, -190.104004, + 164.013000, 0.000000, -190.104004, + 173.214996, 7.000000, -196.615997, + 182.121994, 7.000000, -185.050003, + 184.182007, 7.000000, -186.630997, + 184.182007, 0.000000, -186.630997, + 182.917999, 7.000000, -188.278000, + 182.917999, 0.000000, -188.278000, + 175.274002, 7.000000, -198.197006, + 175.274002, 0.000000, -198.197006, + 181.820999, 7.000000, -183.869995, + 173.656006, 7.000000, -177.580002, + 164.013000, 7.000000, -190.104004, + 159.184998, 7.000000, -184.393005, + 159.184998, 0.000000, -184.393005, + 166.100006, 7.000000, -175.376007, + 166.100006, 0.000000, -175.376007, + 167.697998, 7.000000, -174.429001, + 167.697998, 0.000000, -174.429001, + 169.537003, 7.000000, -173.828003, + 169.537003, 0.000000, -173.828003, + 171.416000, 7.000000, -173.794998, + 171.416000, 0.000000, -173.794998, + 173.569000, 7.000000, -174.317993, + 173.569000, 0.000000, -174.317993, + 183.826996, 7.000000, -179.317001, + 183.826996, 0.000000, -179.317001, + -152.479996, 10.000000, 161.610992, + -152.479996, 0.000000, 161.610992, + -146.641998, 10.000000, 165.563004, + -146.641998, 0.000000, 165.563004, + -139.098999, 10.000000, 155.389008, + -139.098999, 0.000000, 155.389008, + -138.009003, 10.000000, 156.223007, + -138.009003, 0.000000, 156.223007, + -137.727997, 10.000000, 155.822998, + -137.727997, 0.000000, 155.822998, + -132.190994, 10.000000, 147.496002, + -132.190994, 0.000000, 147.496002, + -132.190994, 10.000000, 147.485001, + -132.190994, 0.000000, 147.485001, + -131.949997, 10.000000, 147.128998, + -131.949997, 0.000000, 147.128998, + -139.600006, 10.000000, 142.042007, + -139.600006, 0.000000, 142.042007, + -142.375000, 10.000000, 146.371994, + -142.375000, 0.000000, 146.371994, + -146.199997, 10.000000, 152.705994, + -146.199997, 0.000000, 152.705994, + -146.621994, 10.000000, 153.328995, + -146.621994, 0.000000, 153.328995, + -147.423996, 10.000000, 154.464996, + -147.423996, 0.000000, 154.464996, + -124.220001, 7.500000, 152.238007, + -124.220001, 0.000000, 152.238007, + -130.779999, 7.500000, 147.863998, + -130.779999, 0.000000, 147.863998, + -130.906998, 7.500000, 148.063995, + -130.906998, 0.000000, 148.063995, + -130.867004, 7.500000, 148.085999, + -130.867004, 0.000000, 148.085999, + -136.832001, 7.500000, 157.125000, + -136.832001, 0.000000, 157.125000, + -138.009003, 7.500000, 156.223007, + -139.098999, 7.500000, 155.389008, + -146.641998, 7.500000, 165.563004, + -146.514999, 7.500000, 165.641006, + -146.514999, 0.000000, 165.641006, + -146.602005, 7.500000, 165.774002, + -146.602005, 0.000000, 165.774002, + -138.992004, 7.500000, 171.384995, + -138.992004, 0.000000, 171.384995, + -132.477997, 7.500000, 176.182007, + -132.477997, 0.000000, 176.182007, + -118.456001, 7.500000, 158.104996, + -118.456001, 0.000000, 158.104996, + -118.803001, 7.500000, 155.845001, + -118.803001, 0.000000, 155.845001, + 101.963997, 7.500000, -119.926003, + 101.963997, 0.000000, -119.926003, + 102.191002, 7.500000, -120.492996, + 102.191002, 0.000000, -120.492996, + 105.032997, 7.500000, -127.628998, + 105.032997, 0.000000, -127.628998, + 105.266998, 7.500000, -128.218994, + 105.266998, 0.000000, -128.218994, + 104.029999, 7.500000, -128.709000, + 104.029999, 0.000000, -128.709000, + 103.569000, 7.500000, -128.897995, + 103.569000, 0.000000, -128.897995, + 102.833000, 7.500000, -129.188004, + 102.833000, 0.000000, -129.188004, + 102.098000, 7.500000, -129.488007, + 102.098000, 0.000000, -129.488007, + 101.917000, 7.500000, -129.565994, + 101.917000, 0.000000, -129.565994, + 100.927002, 7.500000, -129.955994, + 100.927002, 0.000000, -129.955994, + 98.788002, 7.500000, -130.824005, + 98.788002, 0.000000, -130.824005, + 95.484001, 7.500000, -122.530998, + 95.484001, 0.000000, -122.530998, + 97.624001, 7.500000, -121.674004, + 97.624001, 0.000000, -121.674004, + 98.747002, 7.500000, -121.217003, + 98.747002, 0.000000, -121.217003, + 99.175003, 7.500000, -121.050003, + 99.175003, 0.000000, -121.050003, + 99.683998, 7.500000, -120.849998, + 99.683998, 0.000000, -120.849998, + 100.165001, 7.500000, -120.649002, + 100.165001, 0.000000, -120.649002, + 100.626999, 7.500000, -120.471001, + 100.626999, 0.000000, -120.471001, + 103.086998, 7.500000, -120.137001, + 103.086998, 0.000000, -120.137001, + 111.633003, 7.500000, -116.709000, + 111.633003, 0.000000, -116.709000, + 114.482002, 7.500000, -123.833000, + 114.482002, 0.000000, -123.833000, + 112.462997, 7.500000, -124.646004, + 112.462997, 0.000000, -124.646004, + 112.008003, 7.500000, -124.823997, + 112.008003, 0.000000, -124.823997, + 111.546997, 7.500000, -125.013000, + 111.546997, 0.000000, -125.013000, + 111.084999, 7.500000, -125.202003, + 111.084999, 0.000000, -125.202003, + 110.624001, 7.500000, -125.380997, + 110.624001, 0.000000, -125.380997, + 105.948997, 7.500000, -127.262001, + 105.948997, 0.000000, -127.262001, + 179.126007, 14.000000, 157.804001, + 179.126007, 13.700000, 157.804001, + 183.856995, 14.000000, 152.026993, + 183.856995, 13.700000, 152.026993, + 188.587997, 14.000000, 146.250000, + 188.587997, 13.700000, 146.250000, + 134.356003, 14.000000, 101.801003, + 134.356003, 13.700000, 101.801003, + 129.625000, 14.000000, 107.578499, + 129.625000, 13.700000, 107.578499, + 129.160004, 14.000000, 108.135002, + 129.160004, 13.700000, 108.135002, + 124.893997, 14.000000, 113.356003, + 124.893997, 13.700000, 113.356003, + 179.126007, 14.000311, 157.804001, + 183.856995, 20.000000, 152.026993, + 188.587997, 14.000311, 146.250000, + 129.625000, 20.000000, 107.578499, + 129.160004, 19.417305, 108.135002, + 124.893997, 14.000001, 113.356003, + 135.298996, 14.000000, 100.554001, + 135.298996, 13.700000, 100.554001, + 124.686996, 14.000000, 113.634003, + 124.686996, 13.700000, 113.634003, + 126.332001, 14.000000, 115.158997, + 126.332001, 13.700000, 115.158997, + 127.615997, 14.000000, 116.349998, + 127.615997, 13.700000, 116.349998, + 132.089005, 14.000000, 120.490997, + 132.089005, 13.700000, 120.490997, + 142.654999, 14.000000, 130.153000, + 142.654999, 13.700000, 130.153000, + 150.753006, 14.000000, 137.556000, + 150.753006, 13.700000, 137.556000, + 164.962997, 14.000000, 148.554001, + 164.962997, 13.700000, 148.554001, + 171.362000, 14.000000, 153.507004, + 171.362000, 13.700000, 153.507004, + 173.207993, 14.000000, 154.977005, + 173.207993, 13.700000, 154.977005, + 175.388000, 14.000000, 156.712997, + 175.388000, 13.700000, 156.712997, + 180.591003, 14.000000, 160.843002, + 180.591003, 13.700000, 160.843002, + 195.048004, 14.000000, 170.783997, + 195.048004, 13.700000, 170.783997, + 195.770004, 14.000000, 169.537003, + 195.770004, 13.700000, 169.537003, + 204.871002, 14.000000, 175.414001, + 204.871002, 13.700000, 175.414001, + 220.886993, 14.000000, 186.345001, + 220.886993, 13.700000, 186.345001, + 232.375000, 14.000000, 194.149002, + 232.375000, 13.700000, 194.149002, + 275.941986, 14.000000, 227.153000, + 275.941986, 13.700000, 227.153000, + 278.114990, 14.000000, 224.492996, + 278.114990, 13.700000, 224.492996, + 280.562988, 14.000000, 221.498993, + 280.562988, 13.700000, 221.498993, + 255.371994, 14.000000, 201.662003, + 255.371994, 13.700000, 201.662003, + 268.231995, 14.000000, 185.354996, + 268.231995, 13.700000, 185.354996, + 284.955994, 14.000000, 165.507004, + 284.955994, 13.700000, 165.507004, + 280.963989, 14.000000, 162.311996, + 280.963989, 13.700000, 162.311996, + 277.259003, 14.000000, 159.339996, + 277.259003, 13.700000, 159.339996, + 271.575012, 14.000000, 166.932007, + 271.575012, 13.700000, 166.932007, + 270.404999, 14.000000, 166.119003, + 270.404999, 13.700000, 166.119003, + 269.643005, 14.000000, 167.166000, + 269.643005, 13.700000, 167.166000, + 261.283997, 14.000000, 178.498001, + 261.283997, 13.700000, 178.498001, + 252.985001, 14.000000, 189.751999, + 252.985001, 13.700000, 189.751999, + 247.067001, 14.000000, 189.595993, + 247.067001, 13.700000, 189.595993, + 240.962006, 14.000000, 184.720001, + 240.962006, 13.700000, 184.720001, + 239.149002, 14.000000, 183.440002, + 239.149002, 13.700000, 183.440002, + 237.444000, 14.000000, 182.238007, + 237.444000, 13.700000, 182.238007, + 226.899002, 14.000000, 174.356995, + 226.899002, 13.700000, 174.356995, + 221.367996, 14.000000, 170.227005, + 221.367996, 13.700000, 170.227005, + 217.089005, 14.000000, 167.020996, + 217.089005, 13.700000, 167.020996, + 213.697998, 14.000000, 164.483002, + 213.697998, 13.700000, 164.483002, + 209.772995, 14.000000, 161.554993, + 209.772995, 13.700000, 161.554993, + 207.112000, 14.000000, 159.563004, + 207.112000, 13.700000, 159.563004, + 203.688004, 14.000000, 157.003006, + 203.688004, 13.700000, 157.003006, + 198.966995, 14.000000, 153.106995, + 198.966995, 13.700000, 153.106995, + 197.007004, 14.000000, 151.492996, + 197.007004, 13.700000, 151.492996, + 188.962997, 14.000000, 144.847000, + 188.962997, 13.700000, 144.847000, + 186.703003, 14.000000, 142.988007, + 186.703003, 13.700000, 142.988007, + 181.024994, 14.000000, 138.289993, + 181.024994, 13.700000, 138.289993, + 139.345001, 14.000000, 103.893997, + 139.345001, 13.700000, 103.893997, + -162.566879, 0.000000, -42.736065, + -161.684143, 0.000000, -42.266209, + -162.613861, 0.000000, -42.647793, + -161.731125, 0.000000, -42.177933, + -162.613861, 2.000000, -42.647793, + -161.731125, 2.000000, -42.177933, + -162.566879, 2.000000, -42.736065, + -161.684143, 2.000000, -42.266209, + 186.349350, 0.000000, 142.631027, + 187.120331, 0.000000, 143.267883, + 186.285660, 0.000000, 142.708130, + 187.056656, 0.000000, 143.344971, + 186.285660, 2.000000, 142.708130, + 187.056656, 2.000000, 143.344971, + 186.349350, 2.000000, 142.631027, + 187.120331, 2.000000, 143.267883, + 134.014008, 0.000000, 99.146004, + 133.014008, 0.000000, 99.146004, + 134.014008, 0.000000, 99.045998, + 133.014008, 0.000000, 99.045998, + 134.014008, 2.000000, 99.045998, + 133.014008, 2.000000, 99.045998, + 134.014008, 2.000000, 99.146004, + 133.014008, 2.000000, 99.146004, + 135.832001, 0.000000, 86.366997, + 134.832001, 0.000000, 86.366997, + 135.832001, 0.000000, 86.266998, + 134.832001, 0.000000, 86.266998, + 135.832001, 2.000000, 86.266998, + 134.832001, 2.000000, 86.266998, + 135.832001, 2.000000, 86.366997, + 134.832001, 2.000000, 86.366997, + 163.360489, 0.000000, 50.172497, + 162.620819, 0.000000, 50.845470, + 163.293182, 0.000000, 50.098530, + 162.553513, 0.000000, 50.771503, + 163.293182, 2.000000, 50.098530, + 162.553513, 2.000000, 50.771503, + 163.360489, 2.000000, 50.172497, + 162.620819, 2.000000, 50.845470, + 239.528732, 0.000000, 183.769104, + 238.711624, 0.000000, 183.192612, + 239.586380, 0.000000, 183.687393, + 238.769272, 0.000000, 183.110901, + 239.586380, 2.000000, 183.687393, + 238.769272, 2.000000, 183.110901, + 239.528732, 2.000000, 183.769104, + 238.711624, 2.000000, 183.192612, + 207.482422, 0.000000, 159.902542, + 206.681671, 0.000000, 159.303528, + 207.542328, 0.000000, 159.822464, + 206.741577, 0.000000, 159.223465, + 207.542328, 2.000000, 159.822464, + 206.741577, 2.000000, 159.223465, + 207.482422, 2.000000, 159.902542, + 206.681671, 2.000000, 159.303528, + 261.621033, 0.000000, 178.125290, + 261.027466, 0.000000, 178.930069, + 261.540527, 0.000000, 178.065933, + 260.946991, 0.000000, 178.870712, + 261.540527, 2.000000, 178.065933, + 260.946991, 2.000000, 178.870712, + 261.621033, 2.000000, 178.125290, + 261.027466, 2.000000, 178.930069, + 227.269623, 0.000000, 174.696320, + 226.468521, 0.000000, 174.097794, + 227.329483, 0.000000, 174.616211, + 226.528381, 0.000000, 174.017685, + 227.329483, 2.000000, 174.616211, + 226.528381, 2.000000, 174.017685, + 227.269623, 2.000000, 174.696320, + 226.468521, 2.000000, 174.097794, + 221.738480, 0.000000, 170.566483, + 220.937637, 0.000000, 169.967606, + 221.798370, 0.000000, 170.486389, + 220.997528, 0.000000, 169.887527, + 221.798370, 2.000000, 170.486389, + 220.997528, 2.000000, 169.887527, + 221.738480, 2.000000, 170.566483, + 220.937637, 2.000000, 169.967606, + 217.459244, 0.000000, 167.360733, + 216.658813, 0.000000, 166.761307, + 217.519180, 0.000000, 167.280701, + 216.718765, 0.000000, 166.681259, + 217.519180, 2.000000, 167.280701, + 216.718765, 2.000000, 166.681259, + 217.459244, 2.000000, 167.360733, + 216.658813, 2.000000, 166.761307, + 214.068619, 0.000000, 164.822311, + 213.267517, 0.000000, 164.223785, + 214.128479, 0.000000, 164.742203, + 213.327377, 0.000000, 164.143677, + 214.128479, 2.000000, 164.742203, + 213.327377, 2.000000, 164.143677, + 214.068619, 2.000000, 164.822311, + 213.267517, 2.000000, 164.223785 + ], + "parts": [ + { + "id": "shape1_part1", + "type": "TRIANGLES", + "indices": [ + 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4, + 4, 5, 6, 5, 7, 6, 6, 7, 8, 7, 9, 8, + 8, 9, 10, 9, 11, 10, 10, 11, 12, 11, 13, 12, + 12, 13, 14, 13, 15, 14, 14, 15, 16, 15, 17, 16, + 16, 17, 18, 17, 19, 18, 18, 19, 20, 19, 21, 20, + 20, 21, 22, 21, 23, 22, 22, 23, 24, 23, 25, 24, + 24, 25, 26, 25, 27, 26, 26, 27, 28, 27, 29, 28, + 28, 29, 30, 29, 31, 30, 30, 31, 32, 31, 33, 32, + 32, 33, 34, 33, 35, 34, 34, 35, 36, 35, 37, 36, + 36, 37, 38, 37, 39, 38, 38, 39, 40, 39, 41, 40, + 40, 41, 42, 41, 43, 42, 42, 43, 44, 43, 45, 44, + 44, 45, 46, 45, 47, 46, 46, 47, 48, 47, 49, 48, + 48, 49, 50, 49, 51, 50, 50, 51, 52, 51, 53, 52, + 52, 53, 54, 53, 55, 54, 54, 55, 56, 55, 57, 56, + 56, 57, 58, 57, 59, 58, 58, 59, 60, 59, 61, 60, + 60, 61, 62, 61, 63, 62, 62, 63, 64, 63, 65, 64, + 64, 65, 66, 65, 67, 66, 66, 67, 68, 67, 69, 68, + 68, 69, 70, 69, 71, 70, 70, 71, 72, 71, 73, 72, + 72, 73, 74, 73, 75, 74, 74, 75, 76, 75, 77, 76, + 76, 77, 78, 77, 79, 78, 78, 79, 80, 79, 81, 80, + 80, 81, 82, 81, 83, 82, 82, 83, 84, 83, 85, 84, + 84, 85, 86, 85, 87, 86, 86, 87, 88, 87, 89, 88, + 88, 89, 90, 89, 91, 90, 90, 91, 0, 91, 1, 0, + 0, 0, 2, 0, 2, 2, 2, 2, 4, 2, 4, 4, + 4, 4, 6, 4, 6, 6, 6, 6, 8, 6, 8, 8, + 8, 8, 10, 8, 10, 10, 10, 10, 12, 10, 12, 12, + 12, 12, 14, 12, 14, 14, 14, 14, 16, 14, 16, 16, + 16, 16, 18, 16, 18, 18, 18, 18, 20, 18, 20, 20, + 20, 20, 22, 20, 22, 22, 22, 22, 24, 22, 24, 24, + 24, 24, 26, 24, 26, 26, 26, 26, 28, 26, 28, 28, + 28, 28, 30, 28, 30, 30, 30, 30, 32, 30, 32, 32, + 32, 32, 34, 32, 34, 34, 34, 34, 36, 34, 36, 36, + 36, 36, 38, 36, 38, 38, 38, 38, 40, 38, 40, 40, + 40, 40, 42, 40, 42, 42, 42, 42, 44, 42, 44, 44, + 44, 44, 46, 44, 46, 46, 46, 46, 48, 46, 48, 48, + 48, 48, 50, 48, 50, 50, 50, 50, 52, 50, 52, 52, + 52, 52, 54, 52, 54, 54, 54, 54, 56, 54, 56, 56, + 56, 56, 58, 56, 58, 58, 58, 58, 60, 58, 60, 60, + 60, 60, 62, 60, 62, 62, 62, 62, 64, 62, 64, 64, + 64, 64, 66, 64, 66, 66, 66, 66, 68, 66, 68, 68, + 68, 68, 70, 68, 70, 70, 70, 70, 72, 70, 72, 72, + 72, 72, 74, 72, 74, 74, 74, 74, 76, 74, 76, 76, + 76, 76, 78, 76, 78, 78, 78, 78, 80, 78, 80, 80, + 80, 80, 82, 80, 82, 82, 82, 82, 84, 82, 84, 84, + 84, 84, 86, 84, 86, 86, 86, 86, 88, 86, 88, 88, + 88, 88, 90, 88, 90, 90, 90, 90, 0, 90, 0, 0, + 92, 93, 94, 93, 95, 94, 94, 95, 96, 95, 97, 96, + 96, 97, 98, 97, 99, 98, 98, 99, 100, 99, 101, 100, + 100, 101, 102, 101, 103, 102, 102, 103, 104, 103, 105, 104, + 104, 105, 106, 105, 107, 106, 106, 107, 108, 107, 109, 108, + 108, 109, 92, 109, 93, 92, 92, 92, 94, 92, 94, 94, + 94, 94, 96, 94, 96, 96, 96, 96, 98, 96, 98, 98, + 98, 98, 100, 98, 100, 100, 100, 100, 102, 100, 102, 102, + 102, 102, 104, 102, 104, 104, 104, 104, 106, 104, 106, 106, + 106, 106, 108, 106, 108, 108, 108, 108, 92, 108, 92, 92, + 110, 111, 112, 111, 113, 112, 112, 113, 114, 113, 115, 114, + 114, 115, 116, 115, 117, 116, 116, 117, 118, 117, 119, 118, + 118, 119, 120, 119, 121, 120, 120, 121, 110, 121, 111, 110, + 110, 110, 112, 110, 112, 112, 112, 112, 114, 112, 114, 114, + 114, 114, 116, 114, 116, 116, 116, 116, 118, 116, 118, 118, + 118, 118, 120, 118, 120, 120, 120, 120, 110, 120, 110, 110, + 142, 143, 144, 143, 145, 144, 144, 145, 146, 145, 147, 146, + 146, 147, 148, 147, 149, 148, 148, 149, 150, 149, 151, 150, + 150, 151, 152, 151, 153, 152, 152, 153, 154, 153, 155, 154, + 154, 155, 156, 155, 157, 156, 156, 157, 158, 157, 159, 158, + 158, 159, 142, 159, 143, 142, 142, 142, 144, 142, 144, 144, + 144, 144, 146, 144, 146, 146, 146, 146, 148, 146, 148, 148, + 148, 148, 150, 148, 150, 150, 150, 150, 152, 150, 152, 152, + 152, 152, 154, 152, 154, 154, 154, 154, 156, 154, 156, 156, + 156, 156, 158, 156, 158, 158, 158, 158, 142, 158, 142, 142, + 160, 161, 162, 161, 163, 162, 162, 163, 164, 163, 165, 164, + 164, 165, 166, 165, 167, 166, 166, 167, 168, 167, 169, 168, + 168, 169, 170, 169, 171, 170, 170, 171, 172, 171, 173, 172, + 172, 173, 174, 173, 175, 174, 174, 175, 176, 175, 177, 176, + 176, 177, 178, 177, 179, 178, 178, 179, 180, 179, 181, 180, + 180, 181, 182, 181, 183, 182, 182, 183, 184, 183, 185, 184, + 184, 185, 186, 185, 187, 186, 186, 187, 188, 187, 189, 188, + 188, 189, 190, 189, 191, 190, 190, 191, 192, 191, 193, 192, + 192, 193, 194, 193, 195, 194, 194, 195, 196, 195, 197, 196, + 196, 197, 198, 197, 199, 198, 198, 199, 160, 199, 161, 160, + 160, 160, 162, 160, 162, 162, 162, 162, 164, 162, 164, 164, + 164, 164, 166, 164, 166, 166, 166, 166, 168, 166, 168, 168, + 168, 168, 170, 168, 170, 170, 170, 170, 172, 170, 172, 172, + 172, 172, 174, 172, 174, 174, 174, 174, 176, 174, 176, 176, + 176, 176, 178, 176, 178, 178, 178, 178, 180, 178, 180, 180, + 180, 180, 182, 180, 182, 182, 182, 182, 184, 182, 184, 184, + 184, 184, 186, 184, 186, 186, 186, 186, 188, 186, 188, 188, + 188, 188, 190, 188, 190, 190, 190, 190, 192, 190, 192, 192, + 192, 192, 194, 192, 194, 194, 194, 194, 196, 194, 196, 196, + 196, 196, 198, 196, 198, 198, 198, 198, 160, 198, 160, 160, + 200, 143, 201, 143, 159, 201, 201, 159, 202, 159, 157, 202, + 202, 157, 203, 157, 155, 203, 203, 155, 204, 155, 153, 204, + 204, 153, 205, 153, 151, 205, 205, 151, 206, 151, 149, 206, + 206, 149, 207, 149, 147, 207, 207, 147, 208, 147, 145, 208, + 208, 145, 200, 145, 143, 200, 200, 200, 201, 200, 201, 201, + 201, 201, 202, 201, 202, 202, 202, 202, 203, 202, 203, 203, + 203, 203, 204, 203, 204, 204, 204, 204, 205, 204, 205, 205, + 205, 205, 206, 205, 206, 206, 206, 206, 207, 206, 207, 207, + 207, 207, 208, 207, 208, 208, 208, 208, 200, 208, 200, 200, + 209, 210, 211, 210, 212, 211, 211, 212, 213, 212, 214, 213, + 213, 214, 215, 214, 216, 215, 215, 216, 217, 216, 218, 217, + 217, 218, 219, 218, 220, 219, 219, 220, 221, 220, 222, 221, + 221, 222, 223, 222, 224, 223, 223, 224, 225, 224, 226, 225, + 225, 226, 227, 226, 228, 227, 227, 228, 229, 228, 230, 229, + 229, 230, 209, 230, 210, 209, 209, 209, 211, 209, 211, 211, + 211, 211, 213, 211, 213, 213, 213, 213, 215, 213, 215, 215, + 215, 215, 217, 215, 217, 217, 217, 217, 219, 217, 219, 219, + 219, 219, 221, 219, 221, 221, 221, 221, 223, 221, 223, 223, + 223, 223, 225, 223, 225, 225, 225, 225, 227, 225, 227, 227, + 227, 227, 229, 227, 229, 229, 229, 229, 209, 229, 209, 209, + 231, 232, 32, 232, 33, 32, 32, 33, 30, 33, 31, 30, + 30, 31, 28, 31, 29, 28, 28, 29, 26, 29, 27, 26, + 26, 27, 233, 27, 234, 233, 233, 234, 235, 234, 236, 235, + 235, 236, 237, 236, 238, 237, 237, 238, 239, 238, 240, 239, + 239, 240, 241, 240, 242, 241, 241, 242, 243, 242, 244, 243, + 243, 244, 245, 244, 246, 245, 245, 246, 247, 246, 248, 247, + 247, 248, 249, 248, 250, 249, 249, 250, 251, 250, 252, 251, + 251, 252, 253, 252, 254, 253, 253, 254, 255, 254, 256, 255, + 255, 256, 231, 256, 232, 231, 231, 231, 32, 231, 32, 32, + 32, 32, 30, 32, 30, 30, 30, 30, 28, 30, 28, 28, + 28, 28, 26, 28, 26, 26, 26, 26, 233, 26, 233, 233, + 233, 233, 235, 233, 235, 235, 235, 235, 237, 235, 237, 237, + 237, 237, 239, 237, 239, 239, 239, 239, 241, 239, 241, 241, + 241, 241, 243, 241, 243, 243, 243, 243, 245, 243, 245, 245, + 245, 245, 247, 245, 247, 247, 247, 247, 249, 247, 249, 249, + 249, 249, 251, 249, 251, 251, 251, 251, 253, 251, 253, 253, + 253, 253, 255, 253, 255, 255, 255, 255, 231, 255, 231, 231, + 257, 258, 259, 258, 260, 259, 259, 260, 261, 260, 262, 261, + 261, 262, 263, 262, 264, 263, 263, 264, 265, 264, 266, 265, + 265, 266, 267, 266, 268, 267, 267, 268, 269, 268, 270, 269, + 269, 270, 271, 270, 272, 271, 271, 272, 257, 272, 258, 257, + 257, 257, 259, 257, 259, 259, 259, 259, 261, 259, 261, 261, + 261, 261, 263, 261, 263, 263, 263, 263, 265, 263, 265, 265, + 265, 265, 267, 265, 267, 267, 267, 267, 269, 267, 269, 269, + 269, 269, 271, 269, 271, 271, 271, 271, 257, 271, 257, 257, + 273, 274, 275, 274, 276, 275, 275, 276, 277, 276, 278, 277, + 277, 278, 279, 278, 280, 279, 279, 280, 273, 280, 274, 273, + 273, 273, 275, 273, 275, 275, 275, 275, 277, 275, 277, 277, + 277, 277, 279, 277, 279, 279, 279, 279, 273, 279, 273, 273, + 281, 282, 283, 282, 284, 283, 283, 284, 285, 284, 286, 285, + 285, 286, 287, 286, 288, 287, 287, 288, 289, 288, 290, 289, + 289, 290, 281, 290, 282, 281, 281, 281, 283, 281, 283, 283, + 283, 283, 285, 283, 285, 285, 285, 285, 287, 285, 287, 287, + 287, 287, 289, 287, 289, 289, 289, 289, 281, 289, 281, 281, + 291, 292, 293, 292, 294, 293, 293, 294, 295, 294, 296, 295, + 295, 296, 297, 296, 298, 297, 297, 298, 299, 298, 300, 299, + 299, 300, 301, 300, 302, 301, 301, 302, 303, 302, 304, 303, + 303, 304, 291, 304, 292, 291, 291, 291, 293, 291, 293, 293, + 293, 293, 295, 293, 295, 295, 295, 295, 297, 295, 297, 297, + 297, 297, 299, 297, 299, 299, 299, 299, 301, 299, 301, 301, + 301, 301, 303, 301, 303, 303, 303, 303, 291, 303, 291, 291, + 305, 306, 307, 306, 308, 307, 307, 308, 309, 308, 284, 309, + 309, 284, 310, 284, 282, 310, 310, 282, 305, 282, 306, 305, + 305, 305, 307, 305, 307, 307, 307, 307, 309, 307, 309, 309, + 309, 309, 310, 309, 310, 310, 310, 310, 305, 310, 305, 305, + 311, 312, 313, 312, 314, 313, 313, 314, 315, 314, 316, 315, + 315, 316, 317, 316, 318, 317, 317, 318, 311, 318, 312, 311, + 311, 311, 313, 311, 313, 313, 313, 313, 315, 313, 315, 315, + 315, 315, 317, 315, 317, 317, 317, 317, 311, 317, 311, 311, + 345, 346, 347, 346, 348, 347, 347, 348, 349, 348, 350, 349, + 349, 350, 351, 350, 352, 351, 351, 352, 353, 352, 354, 353, + 353, 354, 355, 354, 356, 355, 355, 356, 357, 356, 358, 357, + 357, 358, 359, 358, 360, 359, 359, 360, 361, 360, 362, 361, + 361, 362, 363, 362, 364, 363, 363, 364, 365, 364, 366, 365, + 365, 366, 367, 366, 368, 367, 367, 368, 345, 368, 346, 345, + 345, 345, 347, 345, 347, 347, 347, 347, 349, 347, 349, 349, + 349, 349, 351, 349, 351, 351, 351, 351, 353, 351, 353, 353, + 353, 353, 355, 353, 355, 355, 355, 355, 357, 355, 357, 357, + 357, 357, 359, 357, 359, 359, 359, 359, 361, 359, 361, 361, + 361, 361, 363, 361, 363, 363, 363, 363, 365, 363, 365, 365, + 365, 365, 367, 365, 367, 367, 367, 367, 345, 367, 345, 345, + 369, 360, 370, 360, 358, 370, 370, 358, 371, 358, 356, 371, + 371, 356, 372, 356, 354, 372, 372, 354, 373, 354, 352, 373, + 373, 352, 374, 352, 350, 374, 374, 350, 375, 350, 376, 375, + 375, 376, 377, 376, 378, 377, 377, 378, 379, 378, 380, 379, + 379, 380, 381, 380, 382, 381, 381, 382, 383, 382, 384, 383, + 383, 384, 385, 384, 386, 385, 385, 386, 387, 386, 388, 387, + 387, 388, 369, 388, 360, 369, 369, 369, 370, 369, 370, 370, + 370, 370, 371, 370, 371, 371, 371, 371, 372, 371, 372, 372, + 372, 372, 373, 372, 373, 373, 373, 373, 374, 373, 374, 374, + 374, 374, 375, 374, 375, 375, 375, 375, 377, 375, 377, 377, + 377, 377, 379, 377, 379, 379, 379, 379, 381, 379, 381, 381, + 381, 381, 383, 381, 383, 383, 383, 383, 385, 383, 385, 385, + 385, 385, 387, 385, 387, 387, 387, 387, 369, 387, 369, 369, + 389, 390, 391, 390, 392, 391, 391, 392, 393, 392, 394, 393, + 393, 394, 395, 394, 396, 395, 395, 396, 397, 396, 398, 397, + 397, 398, 399, 398, 400, 399, 399, 400, 389, 400, 390, 389, + 389, 389, 391, 389, 391, 391, 391, 391, 393, 391, 393, 393, + 393, 393, 395, 393, 395, 395, 395, 395, 397, 395, 397, 397, + 397, 397, 399, 397, 399, 399, 399, 399, 389, 399, 389, 389, + 401, 402, 403, 402, 404, 403, 403, 404, 405, 404, 406, 405, + 405, 406, 407, 406, 408, 407, 407, 408, 409, 408, 410, 409, + 409, 410, 411, 410, 412, 411, 411, 412, 413, 412, 414, 413, + 413, 414, 415, 414, 416, 415, 415, 416, 401, 416, 402, 401, + 401, 401, 403, 401, 403, 403, 403, 403, 405, 403, 405, 405, + 405, 405, 407, 405, 407, 407, 407, 407, 409, 407, 409, 409, + 409, 409, 411, 409, 411, 411, 411, 411, 413, 411, 413, 413, + 413, 413, 415, 413, 415, 415, 415, 415, 401, 415, 401, 401, + 417, 418, 419, 418, 420, 419, 419, 420, 421, 420, 422, 421, + 421, 422, 423, 422, 424, 423, 423, 424, 425, 424, 426, 425, + 425, 426, 427, 426, 428, 427, 427, 428, 429, 428, 430, 429, + 429, 430, 431, 430, 432, 431, 431, 432, 433, 432, 434, 433, + 433, 434, 417, 434, 418, 417, 417, 417, 419, 417, 419, 419, + 419, 419, 421, 419, 421, 421, 421, 421, 423, 421, 423, 423, + 423, 423, 425, 423, 425, 425, 425, 425, 427, 425, 427, 427, + 427, 427, 429, 427, 429, 429, 429, 429, 431, 429, 431, 431, + 431, 431, 433, 431, 433, 433, 433, 433, 417, 433, 417, 417, + 435, 430, 436, 430, 437, 436, 436, 437, 438, 437, 439, 438, + 438, 439, 440, 439, 441, 440, 440, 441, 442, 441, 443, 442, + 442, 443, 444, 443, 445, 444, 444, 445, 446, 445, 447, 446, + 446, 447, 448, 447, 418, 448, 448, 418, 449, 418, 434, 449, + 449, 434, 450, 434, 432, 450, 450, 432, 435, 432, 430, 435, + 435, 435, 436, 435, 436, 436, 436, 436, 438, 436, 438, 438, + 438, 438, 440, 438, 440, 440, 440, 440, 442, 440, 442, 442, + 442, 442, 444, 442, 444, 444, 444, 444, 446, 444, 446, 446, + 446, 446, 448, 446, 448, 448, 448, 448, 449, 448, 449, 449, + 449, 449, 450, 449, 450, 450, 450, 450, 435, 450, 435, 435, + 451, 420, 452, 420, 453, 452, 452, 453, 454, 453, 455, 454, + 454, 455, 456, 455, 457, 456, 456, 457, 458, 457, 459, 458, + 458, 459, 460, 459, 461, 460, 460, 461, 462, 461, 463, 462, + 462, 463, 464, 463, 465, 464, 464, 465, 466, 465, 467, 466, + 466, 467, 468, 467, 469, 468, 468, 469, 470, 469, 471, 470, + 470, 471, 472, 471, 473, 472, 472, 473, 474, 473, 439, 474, + 474, 439, 475, 439, 437, 475, 475, 437, 476, 437, 430, 476, + 476, 430, 477, 430, 428, 477, 477, 428, 478, 428, 426, 478, + 478, 426, 479, 426, 424, 479, 479, 424, 480, 424, 422, 480, + 480, 422, 451, 422, 420, 451, 451, 451, 452, 451, 452, 452, + 452, 452, 454, 452, 454, 454, 454, 454, 456, 454, 456, 456, + 456, 456, 458, 456, 458, 458, 458, 458, 460, 458, 460, 460, + 460, 460, 462, 460, 462, 462, 462, 462, 464, 462, 464, 464, + 464, 464, 466, 464, 466, 466, 466, 466, 468, 466, 468, 468, + 468, 468, 470, 468, 470, 470, 470, 470, 472, 470, 472, 472, + 472, 472, 474, 472, 474, 474, 474, 474, 475, 474, 475, 475, + 475, 475, 476, 475, 476, 476, 476, 476, 477, 476, 477, 477, + 477, 477, 478, 477, 478, 478, 478, 478, 479, 478, 479, 479, + 479, 479, 480, 479, 480, 480, 480, 480, 451, 480, 451, 451, + 295, 296, 293, 296, 294, 293, 293, 294, 481, 294, 482, 481, + 481, 482, 483, 482, 484, 483, 483, 484, 295, 484, 296, 295, + 295, 295, 293, 295, 293, 293, 293, 293, 481, 293, 481, 481, + 481, 481, 483, 481, 483, 483, 483, 483, 295, 483, 295, 295, + 485, 486, 487, 486, 488, 487, 487, 488, 303, 488, 304, 303, + 303, 304, 301, 304, 302, 301, 301, 302, 299, 302, 300, 299, + 299, 300, 297, 300, 298, 297, 297, 298, 485, 298, 486, 485, + 485, 485, 487, 485, 487, 487, 487, 487, 303, 487, 303, 303, + 303, 303, 301, 303, 301, 301, 301, 301, 299, 301, 299, 299, + 299, 299, 297, 299, 297, 297, 297, 297, 485, 297, 485, 485, + 489, 490, 491, 490, 492, 491, 491, 492, 493, 492, 494, 493, + 493, 494, 495, 494, 496, 495, 495, 496, 489, 496, 490, 489, + 489, 489, 491, 489, 491, 491, 491, 491, 493, 491, 493, 493, + 493, 493, 495, 493, 495, 495, 495, 495, 489, 495, 489, 489, + 495, 496, 493, 496, 494, 493, 493, 494, 497, 494, 498, 497, + 497, 498, 499, 498, 500, 499, 499, 500, 501, 500, 502, 501, + 501, 502, 495, 502, 496, 495, 495, 495, 493, 495, 493, 493, + 493, 493, 497, 493, 497, 497, 497, 497, 499, 497, 499, 499, + 499, 499, 501, 499, 501, 501, 501, 501, 495, 501, 495, 495, + 503, 504, 499, 504, 500, 499, 499, 500, 497, 500, 498, 497, + 497, 498, 505, 498, 506, 505, 505, 506, 507, 506, 508, 507, + 507, 508, 503, 508, 504, 503, 503, 503, 499, 503, 499, 499, + 499, 499, 497, 499, 497, 497, 497, 497, 505, 497, 505, 505, + 505, 505, 507, 505, 507, 507, 507, 507, 503, 507, 503, 503, + 509, 510, 511, 510, 512, 511, 511, 512, 513, 512, 514, 513, + 513, 514, 515, 514, 516, 515, 515, 516, 517, 516, 518, 517, + 517, 518, 519, 518, 520, 519, 519, 520, 521, 520, 522, 521, + 521, 522, 509, 522, 510, 509, 509, 509, 511, 509, 511, 511, + 511, 511, 513, 511, 513, 513, 513, 513, 515, 513, 515, 515, + 515, 515, 517, 515, 517, 517, 517, 517, 519, 517, 519, 519, + 519, 519, 521, 519, 521, 521, 521, 521, 509, 521, 509, 509, + 523, 524, 525, 524, 526, 525, 525, 526, 527, 526, 528, 527, + 527, 528, 529, 528, 530, 529, 529, 530, 531, 530, 532, 531, + 531, 532, 533, 532, 534, 533, 533, 534, 535, 534, 536, 535, + 535, 536, 537, 536, 538, 537, 537, 538, 539, 538, 540, 539, + 539, 540, 541, 540, 542, 541, 541, 542, 543, 542, 544, 543, + 543, 544, 545, 544, 546, 545, 545, 546, 547, 546, 548, 547, + 547, 548, 523, 548, 524, 523, 523, 523, 525, 523, 525, 525, + 525, 525, 527, 525, 527, 527, 527, 527, 529, 527, 529, 529, + 529, 529, 531, 529, 531, 531, 531, 531, 533, 531, 533, 533, + 533, 533, 535, 533, 535, 535, 535, 535, 537, 535, 537, 537, + 537, 537, 539, 537, 539, 539, 539, 539, 541, 539, 541, 541, + 541, 541, 543, 541, 543, 543, 543, 543, 545, 543, 545, 545, + 545, 545, 547, 545, 547, 547, 547, 547, 523, 547, 523, 523, + 549, 550, 551, 550, 552, 551, 551, 552, 553, 552, 554, 553, + 553, 554, 555, 554, 556, 555, 555, 556, 114, 556, 115, 114, + 114, 115, 112, 115, 113, 112, 112, 113, 110, 113, 111, 110, + 110, 111, 557, 111, 558, 557, 557, 558, 559, 558, 560, 559, + 559, 560, 561, 560, 562, 561, 561, 562, 563, 562, 564, 563, + 563, 564, 565, 564, 566, 565, 565, 566, 567, 566, 568, 567, + 567, 568, 569, 568, 570, 569, 569, 570, 571, 570, 572, 571, + 571, 572, 573, 572, 574, 573, 573, 574, 549, 574, 550, 549, + 549, 549, 551, 549, 551, 551, 551, 551, 553, 551, 553, 553, + 553, 553, 555, 553, 555, 555, 555, 555, 114, 555, 114, 114, + 114, 114, 112, 114, 112, 112, 112, 112, 110, 112, 110, 110, + 110, 110, 557, 110, 557, 557, 557, 557, 559, 557, 559, 559, + 559, 559, 561, 559, 561, 561, 561, 561, 563, 561, 563, 563, + 563, 563, 565, 563, 565, 565, 565, 565, 567, 565, 567, 567, + 567, 567, 569, 567, 569, 569, 569, 569, 571, 569, 571, 571, + 571, 571, 573, 571, 573, 573, 573, 573, 549, 573, 549, 549, + 575, 576, 577, 576, 578, 577, 577, 578, 579, 578, 580, 579, + 579, 580, 581, 580, 582, 581, 581, 582, 583, 582, 584, 583, + 583, 584, 585, 584, 586, 585, 585, 586, 587, 586, 588, 587, + 587, 588, 589, 588, 590, 589, 589, 590, 591, 590, 592, 591, + 591, 592, 593, 592, 594, 593, 593, 594, 595, 594, 596, 595, + 595, 596, 597, 596, 598, 597, 597, 598, 599, 598, 600, 599, + 599, 600, 601, 600, 602, 601, 601, 602, 603, 602, 604, 603, + 603, 604, 605, 604, 532, 605, 605, 532, 606, 532, 530, 606, + 606, 530, 575, 530, 576, 575, 575, 575, 577, 575, 577, 577, + 577, 577, 579, 577, 579, 579, 579, 579, 581, 579, 581, 581, + 581, 581, 583, 581, 583, 583, 583, 583, 585, 583, 585, 585, + 585, 585, 587, 585, 587, 587, 587, 587, 589, 587, 589, 589, + 589, 589, 591, 589, 591, 591, 591, 591, 593, 591, 593, 593, + 593, 593, 595, 593, 595, 595, 595, 595, 597, 595, 597, 597, + 597, 597, 599, 597, 599, 599, 599, 599, 601, 599, 601, 601, + 601, 601, 603, 601, 603, 603, 603, 603, 605, 603, 605, 605, + 605, 605, 606, 605, 606, 606, 606, 606, 575, 606, 575, 575, + 607, 608, 609, 608, 610, 609, 609, 610, 611, 610, 612, 611, + 611, 612, 613, 612, 614, 613, 613, 614, 581, 614, 582, 581, + 581, 582, 579, 582, 580, 579, 579, 580, 607, 580, 608, 607, + 607, 607, 609, 607, 609, 609, 609, 609, 611, 609, 611, 611, + 611, 611, 613, 611, 613, 613, 613, 613, 581, 613, 581, 581, + 581, 581, 579, 581, 579, 579, 579, 579, 607, 579, 607, 607, + 615, 616, 617, 616, 618, 617, 617, 618, 619, 618, 510, 619, + 619, 510, 620, 510, 522, 620, 620, 522, 621, 522, 520, 621, + 621, 520, 615, 520, 616, 615, 615, 615, 617, 615, 617, 617, + 617, 617, 619, 617, 619, 619, 619, 619, 620, 619, 620, 620, + 620, 620, 621, 620, 621, 621, 621, 621, 615, 621, 615, 615, + 622, 623, 624, 623, 534, 624, 624, 534, 605, 534, 532, 605, + 605, 532, 603, 532, 604, 603, 603, 604, 622, 604, 623, 622, + 622, 622, 624, 622, 624, 624, 624, 624, 605, 624, 605, 605, + 605, 605, 603, 605, 603, 603, 603, 603, 622, 603, 622, 622, + 625, 626, 627, 626, 628, 627, 627, 628, 629, 628, 630, 629, + 629, 630, 631, 630, 632, 631, 631, 632, 625, 632, 626, 625, + 625, 625, 627, 625, 627, 627, 627, 627, 629, 627, 629, 629, + 629, 629, 631, 629, 631, 631, 631, 631, 625, 631, 625, 625, + 633, 634, 635, 634, 538, 635, 635, 538, 636, 538, 536, 636, + 636, 536, 624, 536, 534, 624, 624, 534, 622, 534, 623, 622, + 622, 623, 637, 623, 638, 637, 637, 638, 639, 638, 640, 639, + 639, 640, 633, 640, 634, 633, 633, 633, 635, 633, 635, 635, + 635, 635, 636, 635, 636, 636, 636, 636, 624, 636, 624, 624, + 624, 624, 622, 624, 622, 622, 622, 622, 637, 622, 637, 637, + 637, 637, 639, 637, 639, 639, 639, 639, 633, 639, 633, 633, + 641, 642, 643, 642, 644, 643, 643, 644, 645, 644, 646, 645, + 645, 646, 647, 646, 542, 647, 647, 542, 648, 542, 540, 648, + 648, 540, 649, 540, 650, 649, 649, 650, 651, 650, 652, 651, + 651, 652, 653, 652, 654, 653, 653, 654, 655, 654, 656, 655, + 655, 656, 641, 656, 642, 641, 641, 641, 643, 641, 643, 643, + 643, 643, 645, 643, 645, 645, 645, 645, 647, 645, 647, 647, + 647, 647, 648, 647, 648, 648, 648, 648, 649, 648, 649, 649, + 649, 649, 651, 649, 651, 651, 651, 651, 653, 651, 653, 653, + 653, 653, 655, 653, 655, 655, 655, 655, 641, 655, 641, 641, + 668, 669, 670, 669, 671, 670, 670, 671, 672, 671, 673, 672, + 672, 673, 674, 673, 675, 674, 674, 675, 668, 675, 669, 668, + 668, 668, 670, 668, 670, 670, 670, 670, 672, 670, 672, 672, + 672, 672, 674, 672, 674, 674, 674, 674, 668, 674, 668, 668, + 120, 121, 118, 121, 119, 118, 118, 119, 676, 119, 677, 676, + 676, 677, 674, 677, 675, 674, 674, 675, 672, 675, 673, 672, + 672, 673, 120, 673, 121, 120, 120, 120, 118, 120, 118, 118, + 118, 118, 676, 118, 676, 676, 676, 676, 674, 676, 674, 674, + 674, 674, 672, 674, 672, 672, 672, 672, 120, 672, 120, 120, + 670, 671, 668, 671, 669, 668, 668, 669, 678, 669, 679, 678, + 678, 679, 680, 679, 681, 680, 680, 681, 682, 681, 683, 682, + 682, 683, 684, 683, 685, 684, 684, 685, 686, 685, 687, 686, + 686, 687, 670, 687, 671, 670, 670, 670, 668, 670, 668, 668, + 668, 668, 678, 668, 678, 678, 678, 678, 680, 678, 680, 680, + 680, 680, 682, 680, 682, 682, 682, 682, 684, 682, 684, 684, + 684, 684, 686, 684, 686, 686, 686, 686, 670, 686, 670, 670, + 688, 689, 690, 689, 691, 690, 690, 691, 692, 691, 693, 692, + 692, 693, 694, 693, 695, 694, 694, 695, 696, 695, 697, 696, + 696, 697, 698, 697, 699, 698, 698, 699, 700, 699, 701, 700, + 700, 701, 702, 701, 703, 702, 702, 703, 704, 703, 705, 704, + 704, 705, 688, 705, 689, 688, 688, 688, 690, 688, 690, 690, + 690, 690, 692, 690, 692, 692, 692, 692, 694, 692, 694, 694, + 694, 694, 696, 694, 696, 696, 696, 696, 698, 696, 698, 698, + 698, 698, 700, 698, 700, 700, 700, 700, 702, 700, 702, 702, + 702, 702, 704, 702, 704, 704, 704, 704, 688, 704, 688, 688, + 692, 693, 706, 693, 707, 706, 706, 707, 708, 707, 709, 708, + 708, 709, 710, 709, 711, 710, 710, 711, 712, 711, 713, 712, + 712, 713, 714, 713, 715, 714, 714, 715, 716, 715, 717, 716, + 716, 717, 718, 717, 93, 718, 718, 93, 719, 93, 109, 719, + 719, 109, 720, 109, 103, 720, 720, 103, 721, 103, 101, 721, + 721, 101, 694, 101, 695, 694, 694, 695, 692, 695, 693, 692, + 692, 692, 706, 692, 706, 706, 706, 706, 708, 706, 708, 708, + 708, 708, 710, 708, 710, 710, 710, 710, 712, 710, 712, 712, + 712, 712, 714, 712, 714, 714, 714, 714, 716, 714, 716, 716, + 716, 716, 718, 716, 718, 718, 718, 718, 719, 718, 719, 719, + 719, 719, 720, 719, 720, 720, 720, 720, 721, 720, 721, 721, + 721, 721, 694, 721, 694, 694, 694, 694, 692, 694, 692, 692, + 722, 723, 724, 723, 725, 724, 724, 725, 726, 725, 727, 726, + 726, 727, 728, 727, 729, 728, 728, 729, 730, 729, 731, 730, + 730, 731, 732, 731, 733, 732, 732, 733, 734, 733, 735, 734, + 734, 735, 736, 735, 737, 736, 736, 737, 738, 737, 739, 738, + 738, 739, 740, 739, 741, 740, 740, 741, 742, 741, 743, 742, + 742, 743, 744, 743, 745, 744, 744, 745, 746, 745, 747, 746, + 746, 747, 748, 747, 749, 748, 748, 749, 750, 749, 751, 750, + 750, 751, 752, 751, 753, 752, 752, 753, 754, 753, 755, 754, + 754, 755, 756, 755, 757, 756, 756, 757, 722, 757, 723, 722, + 722, 722, 724, 722, 724, 724, 724, 724, 726, 724, 726, 726, + 726, 726, 728, 726, 728, 728, 728, 728, 730, 728, 730, 730, + 730, 730, 732, 730, 732, 732, 732, 732, 734, 732, 734, 734, + 734, 734, 736, 734, 736, 736, 736, 736, 738, 736, 738, 738, + 738, 738, 740, 738, 740, 740, 740, 740, 742, 740, 742, 742, + 742, 742, 744, 742, 744, 744, 744, 744, 746, 744, 746, 746, + 746, 746, 748, 746, 748, 748, 748, 748, 750, 748, 750, 750, + 750, 750, 752, 750, 752, 752, 752, 752, 754, 752, 754, 754, + 754, 754, 756, 754, 756, 756, 756, 756, 722, 756, 722, 722, + 758, 759, 760, 759, 761, 760, 760, 761, 762, 761, 763, 762, + 762, 763, 764, 763, 765, 764, 764, 765, 766, 765, 767, 766, + 766, 767, 768, 767, 769, 768, 768, 769, 770, 769, 771, 770, + 770, 771, 772, 771, 773, 772, 772, 773, 774, 773, 775, 774, + 774, 775, 758, 775, 759, 758, 758, 758, 760, 758, 760, 760, + 760, 760, 762, 760, 762, 762, 762, 762, 764, 762, 764, 764, + 764, 764, 766, 764, 766, 766, 766, 766, 768, 766, 768, 768, + 768, 768, 770, 768, 770, 770, 770, 770, 772, 770, 772, 772, + 772, 772, 774, 772, 774, 774, 774, 774, 758, 774, 758, 758, + 776, 777, 770, 777, 771, 770, 770, 771, 768, 771, 769, 768, + 768, 769, 778, 769, 779, 778, 778, 779, 780, 779, 781, 780, + 780, 781, 782, 781, 783, 782, 782, 783, 784, 783, 785, 784, + 784, 785, 776, 785, 777, 776, 776, 776, 770, 776, 770, 770, + 770, 770, 768, 770, 768, 768, 768, 768, 778, 768, 778, 778, + 778, 778, 780, 778, 780, 780, 780, 780, 782, 780, 782, 782, + 782, 782, 784, 782, 784, 784, 784, 784, 776, 784, 776, 776, + 776, 777, 784, 777, 785, 784, 784, 785, 782, 785, 783, 782, + 782, 783, 780, 783, 781, 780, 780, 781, 786, 781, 787, 786, + 786, 787, 788, 787, 789, 788, 788, 789, 790, 789, 791, 790, + 790, 791, 792, 791, 793, 792, 792, 793, 794, 793, 795, 794, + 794, 795, 796, 795, 797, 796, 796, 797, 776, 797, 777, 776, + 776, 776, 784, 776, 784, 784, 784, 784, 782, 784, 782, 782, + 782, 782, 780, 782, 780, 780, 780, 780, 786, 780, 786, 786, + 786, 786, 788, 786, 788, 788, 788, 788, 790, 788, 790, 790, + 790, 790, 792, 790, 792, 792, 792, 792, 794, 792, 794, 794, + 794, 794, 796, 794, 796, 796, 796, 796, 776, 796, 776, 776, + 792, 793, 790, 793, 791, 790, 790, 791, 788, 791, 789, 788, + 788, 789, 786, 789, 787, 786, 786, 787, 780, 787, 781, 780, + 780, 781, 778, 781, 779, 778, 778, 779, 768, 779, 769, 768, + 768, 769, 766, 769, 767, 766, 766, 767, 764, 767, 765, 764, + 764, 765, 762, 765, 763, 762, 762, 763, 760, 763, 761, 760, + 760, 761, 758, 761, 759, 758, 758, 759, 798, 759, 799, 798, + 798, 799, 800, 799, 801, 800, 800, 801, 802, 801, 803, 802, + 802, 803, 804, 803, 805, 804, 804, 805, 806, 805, 807, 806, + 806, 807, 808, 807, 809, 808, 808, 809, 810, 809, 811, 810, + 810, 811, 812, 811, 813, 812, 812, 813, 814, 813, 815, 814, + 814, 815, 816, 815, 817, 816, 816, 817, 818, 817, 819, 818, + 818, 819, 820, 819, 821, 820, 820, 821, 822, 821, 823, 822, + 822, 823, 824, 823, 825, 824, 824, 825, 826, 825, 827, 826, + 826, 827, 828, 827, 829, 828, 828, 829, 830, 829, 831, 830, + 830, 831, 832, 831, 833, 832, 832, 833, 834, 833, 835, 834, + 834, 835, 836, 835, 837, 836, 836, 837, 838, 837, 839, 838, + 838, 839, 840, 839, 841, 840, 840, 841, 842, 841, 843, 842, + 842, 843, 844, 843, 845, 844, 844, 845, 846, 845, 847, 846, + 846, 847, 848, 847, 849, 848, 848, 849, 728, 849, 729, 728, + 728, 729, 726, 729, 727, 726, 726, 727, 724, 727, 725, 724, + 724, 725, 722, 725, 723, 722, 722, 723, 850, 723, 851, 850, + 850, 851, 792, 851, 793, 792, 792, 792, 790, 792, 790, 790, + 790, 790, 788, 790, 788, 788, 788, 788, 786, 788, 786, 786, + 786, 786, 780, 786, 780, 780, 780, 780, 778, 780, 778, 778, + 778, 778, 768, 778, 768, 768, 768, 768, 766, 768, 766, 766, + 766, 766, 764, 766, 764, 764, 764, 764, 762, 764, 762, 762, + 762, 762, 760, 762, 760, 760, 760, 760, 758, 760, 758, 758, + 758, 758, 798, 758, 798, 798, 798, 798, 800, 798, 800, 800, + 800, 800, 802, 800, 802, 802, 802, 802, 804, 802, 804, 804, + 804, 804, 806, 804, 806, 806, 806, 806, 808, 806, 808, 808, + 808, 808, 810, 808, 810, 810, 810, 810, 812, 810, 812, 812, + 812, 812, 814, 812, 814, 814, 814, 814, 816, 814, 816, 816, + 816, 816, 818, 816, 818, 818, 818, 818, 820, 818, 820, 820, + 820, 820, 822, 820, 822, 822, 822, 822, 824, 822, 824, 824, + 824, 824, 826, 824, 826, 826, 826, 826, 828, 826, 828, 828, + 828, 828, 830, 828, 830, 830, 830, 830, 832, 830, 832, 832, + 832, 832, 834, 832, 834, 834, 834, 834, 836, 834, 836, 836, + 836, 836, 838, 836, 838, 838, 838, 838, 840, 838, 840, 840, + 840, 840, 842, 840, 842, 842, 842, 842, 844, 842, 844, 844, + 844, 844, 846, 844, 846, 846, 846, 846, 848, 846, 848, 848, + 848, 848, 728, 848, 728, 728, 728, 728, 726, 728, 726, 726, + 726, 726, 724, 726, 724, 724, 724, 724, 722, 724, 722, 722, + 722, 722, 850, 722, 850, 850, 850, 850, 792, 850, 792, 792, + 852, 853, 854, 853, 855, 854, 854, 855, 856, 855, 857, 856, + 856, 857, 858, 857, 859, 858, 858, 859, 860, 859, 861, 860, + 860, 861, 862, 861, 863, 862, 862, 863, 864, 863, 865, 864, + 864, 865, 866, 865, 867, 866, 866, 867, 868, 867, 869, 868, + 868, 869, 870, 869, 871, 870, 870, 871, 852, 871, 853, 852, + 852, 852, 854, 852, 854, 854, 854, 854, 856, 854, 856, 856, + 856, 856, 858, 856, 858, 858, 858, 858, 860, 858, 860, 860, + 860, 860, 862, 860, 862, 862, 862, 862, 864, 862, 864, 864, + 864, 864, 866, 864, 866, 866, 866, 866, 868, 866, 868, 868, + 868, 868, 870, 868, 870, 870, 870, 870, 852, 870, 852, 852, + 864, 865, 862, 865, 863, 862, 862, 863, 872, 863, 873, 872, + 872, 873, 874, 873, 875, 874, 874, 875, 876, 875, 877, 876, + 876, 877, 878, 877, 879, 878, 878, 879, 880, 879, 881, 880, + 880, 881, 882, 881, 883, 882, 882, 883, 884, 883, 885, 884, + 884, 885, 886, 885, 887, 886, 886, 887, 888, 887, 889, 888, + 888, 889, 864, 889, 865, 864, 864, 864, 862, 864, 862, 862, + 862, 862, 872, 862, 872, 872, 872, 872, 874, 872, 874, 874, + 874, 874, 876, 874, 876, 876, 876, 876, 878, 876, 878, 878, + 878, 878, 880, 878, 880, 880, 880, 880, 882, 880, 882, 882, + 882, 882, 884, 882, 884, 884, 884, 884, 886, 884, 886, 886, + 886, 886, 888, 886, 888, 888, 888, 888, 864, 888, 864, 864, + 890, 891, 892, 891, 893, 892, 892, 893, 894, 893, 895, 894, + 894, 895, 896, 895, 897, 896, 896, 897, 898, 897, 899, 898, + 898, 899, 890, 899, 891, 890, 890, 890, 892, 890, 892, 892, + 892, 892, 894, 892, 894, 894, 894, 894, 896, 894, 896, 896, + 896, 896, 898, 896, 898, 898, 898, 898, 890, 898, 890, 890, + 900, 901, 902, 901, 903, 902, 902, 903, 904, 903, 905, 904, + 904, 905, 906, 905, 907, 906, 906, 907, 900, 907, 901, 900, + 900, 900, 902, 900, 902, 902, 902, 902, 904, 902, 904, 904, + 904, 904, 906, 904, 906, 906, 906, 906, 900, 906, 900, 900, + 908, 909, 910, 909, 911, 910, 910, 911, 912, 911, 163, 912, + 912, 163, 913, 163, 161, 913, 913, 161, 908, 161, 909, 908, + 908, 908, 910, 908, 910, 910, 910, 910, 912, 910, 912, 912, + 912, 912, 913, 912, 913, 913, 913, 913, 908, 913, 908, 908, + 914, 394, 915, 394, 889, 915, 915, 889, 916, 889, 887, 916, + 916, 887, 917, 887, 396, 917, 917, 396, 914, 396, 394, 914, + 914, 914, 915, 914, 915, 915, 915, 915, 916, 915, 916, 916, + 916, 916, 917, 916, 917, 917, 917, 917, 914, 917, 914, 914, + 918, 919, 920, 919, 921, 920, 920, 921, 900, 921, 901, 900, + 900, 901, 906, 901, 907, 906, 906, 907, 918, 907, 919, 918, + 918, 918, 920, 918, 920, 920, 920, 920, 900, 920, 900, 900, + 900, 900, 906, 900, 906, 906, 906, 906, 918, 906, 918, 918, + 910, 911, 908, 911, 909, 908, 908, 909, 922, 909, 923, 922, + 922, 923, 924, 923, 925, 924, 924, 925, 926, 925, 927, 926, + 926, 927, 910, 927, 911, 910, 910, 910, 908, 910, 908, 908, + 908, 908, 922, 908, 922, 922, 922, 922, 924, 922, 924, 924, + 924, 924, 926, 924, 926, 926, 926, 926, 910, 926, 910, 910, + 928, 929, 930, 929, 931, 930, 930, 931, 932, 931, 933, 932, + 932, 933, 934, 933, 935, 934, 934, 935, 904, 935, 905, 904, + 904, 905, 902, 905, 903, 902, 902, 903, 860, 903, 861, 860, + 860, 861, 858, 861, 859, 858, 858, 859, 936, 859, 937, 936, + 936, 937, 928, 937, 929, 928, 928, 928, 930, 928, 930, 930, + 930, 930, 932, 930, 932, 932, 932, 932, 934, 932, 934, 934, + 934, 934, 904, 934, 904, 904, 904, 904, 902, 904, 902, 902, + 902, 902, 860, 902, 860, 860, 860, 860, 858, 860, 858, 858, + 858, 858, 936, 858, 936, 936, 936, 936, 928, 936, 928, 928, + 918, 919, 938, 919, 939, 938, 938, 939, 940, 939, 941, 940, + 940, 941, 942, 941, 943, 942, 942, 943, 944, 943, 945, 944, + 944, 945, 946, 945, 947, 946, 946, 947, 948, 947, 949, 948, + 948, 949, 950, 949, 951, 950, 950, 951, 952, 951, 953, 952, + 952, 953, 954, 953, 955, 954, 954, 955, 956, 955, 957, 956, + 956, 957, 958, 957, 959, 958, 958, 959, 960, 959, 961, 960, + 960, 961, 962, 961, 963, 962, 962, 963, 964, 963, 965, 964, + 964, 965, 966, 965, 967, 966, 966, 967, 920, 967, 921, 920, + 920, 921, 918, 921, 919, 918, 918, 918, 938, 918, 938, 938, + 938, 938, 940, 938, 940, 940, 940, 940, 942, 940, 942, 942, + 942, 942, 944, 942, 944, 944, 944, 944, 946, 944, 946, 946, + 946, 946, 948, 946, 948, 948, 948, 948, 950, 948, 950, 950, + 950, 950, 952, 950, 952, 952, 952, 952, 954, 952, 954, 954, + 954, 954, 956, 954, 956, 956, 956, 956, 958, 956, 958, 958, + 958, 958, 960, 958, 960, 960, 960, 960, 962, 960, 962, 962, + 962, 962, 964, 962, 964, 964, 964, 964, 966, 964, 966, 966, + 966, 966, 920, 966, 920, 920, 920, 920, 918, 920, 918, 918, + 968, 969, 928, 969, 929, 928, 928, 929, 936, 929, 937, 936, + 936, 937, 970, 937, 971, 970, 970, 971, 972, 971, 973, 972, + 972, 973, 974, 973, 975, 974, 974, 975, 968, 975, 969, 968, + 968, 968, 928, 968, 928, 928, 928, 928, 936, 928, 936, 936, + 936, 936, 970, 936, 970, 970, 970, 970, 972, 970, 972, 972, + 972, 972, 974, 972, 974, 974, 974, 974, 968, 974, 968, 968, + 974, 975, 972, 975, 973, 972, 972, 973, 970, 973, 971, 970, + 970, 971, 852, 971, 853, 852, 852, 853, 870, 853, 871, 870, + 870, 871, 868, 871, 869, 868, 868, 869, 866, 869, 867, 866, + 866, 867, 976, 867, 977, 976, 976, 977, 978, 977, 979, 978, + 978, 979, 391, 979, 392, 391, 391, 392, 389, 392, 390, 389, + 389, 390, 974, 390, 975, 974, 974, 974, 972, 974, 972, 972, + 972, 972, 970, 972, 970, 970, 970, 970, 852, 970, 852, 852, + 852, 852, 870, 852, 870, 870, 870, 870, 868, 870, 868, 868, + 868, 868, 866, 868, 866, 866, 866, 866, 976, 866, 976, 976, + 976, 976, 978, 976, 978, 978, 978, 978, 391, 978, 391, 391, + 391, 391, 389, 391, 389, 389, 389, 389, 974, 389, 974, 974, + 399, 400, 397, 400, 398, 397, 397, 398, 980, 398, 981, 980, + 980, 981, 982, 981, 983, 982, 982, 983, 984, 983, 891, 984, + 984, 891, 985, 891, 899, 985, 985, 899, 986, 899, 987, 986, + 986, 987, 988, 987, 989, 988, 988, 989, 399, 989, 400, 399, + 399, 399, 397, 399, 397, 397, 397, 397, 980, 397, 980, 980, + 980, 980, 982, 980, 982, 982, 982, 982, 984, 982, 984, 984, + 984, 984, 985, 984, 985, 985, 985, 985, 986, 985, 986, 986, + 986, 986, 988, 986, 988, 988, 988, 988, 399, 988, 399, 399, + 990, 330, 991, 330, 992, 991, 991, 992, 993, 992, 994, 993, + 993, 994, 995, 994, 996, 995, 995, 996, 997, 996, 998, 997, + 997, 998, 999, 998, 332, 999, 999, 332, 990, 332, 330, 990, + 990, 990, 991, 990, 991, 991, 991, 991, 993, 991, 993, 993, + 993, 993, 995, 993, 995, 995, 995, 995, 997, 995, 997, 997, + 997, 997, 999, 997, 999, 999, 999, 999, 990, 999, 990, 990, + 997, 998, 995, 998, 996, 995, 995, 996, 1000, 996, 1001, 1000, + 1000, 1001, 930, 1001, 931, 930, 930, 931, 928, 931, 929, 928, + 928, 929, 968, 929, 969, 968, 968, 969, 997, 969, 998, 997, + 997, 997, 995, 997, 995, 995, 995, 995, 1000, 995, 1000, 1000, + 1000, 1000, 930, 1000, 930, 930, 930, 930, 928, 930, 928, 928, + 928, 928, 968, 928, 968, 968, 968, 968, 997, 968, 997, 997, + 1002, 1003, 1004, 1003, 1005, 1004, 1004, 1005, 1006, 1005, 1007, 1006, + 1006, 1007, 1008, 1007, 1009, 1008, 1008, 1009, 1010, 1009, 1011, 1010, + 1010, 1011, 1012, 1011, 1013, 1012, 1012, 1013, 1014, 1013, 1015, 1014, + 1014, 1015, 1016, 1015, 1017, 1016, 1016, 1017, 1018, 1017, 1019, 1018, + 1018, 1019, 1020, 1019, 1021, 1020, 1020, 1021, 1022, 1021, 1023, 1022, + 1022, 1023, 1024, 1023, 1025, 1024, 1024, 1025, 1026, 1025, 1027, 1026, + 1026, 1027, 1028, 1027, 1029, 1028, 1028, 1029, 1030, 1029, 1031, 1030, + 1030, 1031, 1002, 1031, 1003, 1002, 1002, 1002, 1004, 1002, 1004, 1004, + 1004, 1004, 1006, 1004, 1006, 1006, 1006, 1006, 1008, 1006, 1008, 1008, + 1008, 1008, 1010, 1008, 1010, 1010, 1010, 1010, 1012, 1010, 1012, 1012, + 1012, 1012, 1014, 1012, 1014, 1014, 1014, 1014, 1016, 1014, 1016, 1016, + 1016, 1016, 1018, 1016, 1018, 1018, 1018, 1018, 1020, 1018, 1020, 1020, + 1020, 1020, 1022, 1020, 1022, 1022, 1022, 1022, 1024, 1022, 1024, 1024, + 1024, 1024, 1026, 1024, 1026, 1026, 1026, 1026, 1028, 1026, 1028, 1028, + 1028, 1028, 1030, 1028, 1030, 1030, 1030, 1030, 1002, 1030, 1002, 1002, + 1032, 1033, 1034, 1033, 1035, 1034, 1034, 1035, 1036, 1035, 612, 1036, + 1036, 612, 1037, 612, 610, 1037, 1037, 610, 1032, 610, 1033, 1032, + 1032, 1032, 1034, 1032, 1034, 1034, 1034, 1034, 1036, 1034, 1036, 1036, + 1036, 1036, 1037, 1036, 1037, 1037, 1037, 1037, 1032, 1037, 1032, 1032, + 1037, 610, 1038, 610, 1039, 1038, 1038, 1039, 1040, 1039, 1041, 1040, + 1040, 1041, 1032, 1041, 1033, 1032, 1032, 1033, 1037, 1033, 610, 1037, + 1037, 1037, 1038, 1037, 1038, 1038, 1038, 1038, 1040, 1038, 1040, 1040, + 1040, 1040, 1032, 1040, 1032, 1032, 1032, 1032, 1037, 1032, 1037, 1037, + 609, 610, 607, 610, 608, 607, 607, 608, 1042, 608, 1043, 1042, + 1042, 1043, 1044, 1043, 1045, 1044, 1044, 1045, 1046, 1045, 1047, 1046, + 1046, 1047, 1048, 1047, 1039, 1048, 1048, 1039, 609, 1039, 610, 609, + 609, 609, 607, 609, 607, 607, 607, 607, 1042, 607, 1042, 1042, + 1042, 1042, 1044, 1042, 1044, 1044, 1044, 1044, 1046, 1044, 1046, 1046, + 1046, 1046, 1048, 1046, 1048, 1048, 1048, 1048, 609, 1048, 609, 609, + 1049, 1050, 1051, 1050, 1052, 1051, 1051, 1052, 1053, 1052, 1054, 1053, + 1053, 1054, 1055, 1054, 1056, 1055, 1055, 1056, 1057, 1056, 1058, 1057, + 1057, 1058, 1059, 1058, 1060, 1059, 1059, 1060, 1049, 1060, 1050, 1049, + 1049, 1049, 1051, 1049, 1051, 1051, 1051, 1051, 1053, 1051, 1053, 1053, + 1053, 1053, 1055, 1053, 1055, 1055, 1055, 1055, 1057, 1055, 1057, 1057, + 1057, 1057, 1059, 1057, 1059, 1059, 1059, 1059, 1049, 1059, 1049, 1049, + 1049, 1050, 1059, 1050, 1060, 1059, 1059, 1060, 1057, 1060, 1058, 1057, + 1057, 1058, 1008, 1058, 1009, 1008, 1008, 1009, 1006, 1009, 1007, 1006, + 1006, 1007, 1004, 1007, 1005, 1004, 1004, 1005, 1002, 1005, 1003, 1002, + 1002, 1003, 1061, 1003, 1062, 1061, 1061, 1062, 1049, 1062, 1050, 1049, + 1049, 1049, 1059, 1049, 1059, 1059, 1059, 1059, 1057, 1059, 1057, 1057, + 1057, 1057, 1008, 1057, 1008, 1008, 1008, 1008, 1006, 1008, 1006, 1006, + 1006, 1006, 1004, 1006, 1004, 1004, 1004, 1004, 1002, 1004, 1002, 1002, + 1002, 1002, 1061, 1002, 1061, 1061, 1061, 1061, 1049, 1061, 1049, 1049, + 1063, 1064, 1065, 1064, 1066, 1065, 1065, 1066, 1067, 1066, 1068, 1067, + 1067, 1068, 1069, 1068, 1070, 1069, 1069, 1070, 1071, 1070, 1072, 1071, + 1071, 1072, 1073, 1072, 1074, 1073, 1073, 1074, 1075, 1074, 1076, 1075, + 1075, 1076, 1077, 1076, 1078, 1077, 1077, 1078, 1079, 1078, 1080, 1079, + 1079, 1080, 1081, 1080, 1082, 1081, 1081, 1082, 1083, 1082, 1084, 1083, + 1083, 1084, 1063, 1084, 1064, 1063, 1063, 1063, 1065, 1063, 1065, 1065, + 1065, 1065, 1067, 1065, 1067, 1067, 1067, 1067, 1069, 1067, 1069, 1069, + 1069, 1069, 1071, 1069, 1071, 1071, 1071, 1071, 1073, 1071, 1073, 1073, + 1073, 1073, 1075, 1073, 1075, 1075, 1075, 1075, 1077, 1075, 1077, 1077, + 1077, 1077, 1079, 1077, 1079, 1079, 1079, 1079, 1081, 1079, 1081, 1081, + 1081, 1081, 1083, 1081, 1083, 1083, 1083, 1083, 1063, 1083, 1063, 1063, + 1085, 1086, 1087, 1086, 1088, 1087, 1087, 1088, 1083, 1088, 1084, 1083, + 1083, 1084, 1081, 1084, 1082, 1081, 1081, 1082, 1089, 1082, 1090, 1089, + 1089, 1090, 1085, 1090, 1086, 1085, 1085, 1085, 1087, 1085, 1087, 1087, + 1087, 1087, 1083, 1087, 1083, 1083, 1083, 1083, 1081, 1083, 1081, 1081, + 1081, 1081, 1089, 1081, 1089, 1089, 1089, 1089, 1085, 1089, 1085, 1085, + 1044, 1045, 1042, 1045, 1043, 1042, 1042, 1043, 1091, 1043, 1092, 1091, + 1091, 1092, 1093, 1092, 1094, 1093, 1093, 1094, 1095, 1094, 1096, 1095, + 1095, 1096, 1097, 1096, 1098, 1097, 1097, 1098, 1099, 1098, 1100, 1099, + 1099, 1100, 1101, 1100, 1102, 1101, 1101, 1102, 1103, 1102, 1104, 1103, + 1103, 1104, 1087, 1104, 1088, 1087, 1087, 1088, 1085, 1088, 1086, 1085, + 1085, 1086, 1105, 1086, 1106, 1105, 1105, 1106, 1107, 1106, 1108, 1107, + 1107, 1108, 1109, 1108, 1110, 1109, 1109, 1110, 1044, 1110, 1045, 1044, + 1044, 1044, 1042, 1044, 1042, 1042, 1042, 1042, 1091, 1042, 1091, 1091, + 1091, 1091, 1093, 1091, 1093, 1093, 1093, 1093, 1095, 1093, 1095, 1095, + 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1099, 1097, 1099, 1099, + 1099, 1099, 1101, 1099, 1101, 1101, 1101, 1101, 1103, 1101, 1103, 1103, + 1103, 1103, 1087, 1103, 1087, 1087, 1087, 1087, 1085, 1087, 1085, 1085, + 1085, 1085, 1105, 1085, 1105, 1105, 1105, 1105, 1107, 1105, 1107, 1107, + 1107, 1107, 1109, 1107, 1109, 1109, 1109, 1109, 1044, 1109, 1044, 1044, + 1065, 1066, 1063, 1066, 1064, 1063, 1063, 1064, 1111, 1064, 1112, 1111, + 1111, 1112, 1113, 1112, 1114, 1113, 1113, 1114, 1115, 1114, 1116, 1115, + 1115, 1116, 1117, 1116, 1118, 1117, 1117, 1118, 1119, 1118, 1120, 1119, + 1119, 1120, 1065, 1120, 1066, 1065, 1065, 1065, 1063, 1065, 1063, 1063, + 1063, 1063, 1111, 1063, 1111, 1111, 1111, 1111, 1113, 1111, 1113, 1113, + 1113, 1113, 1115, 1113, 1115, 1115, 1115, 1115, 1117, 1115, 1117, 1117, + 1117, 1117, 1119, 1117, 1119, 1119, 1119, 1119, 1065, 1119, 1065, 1065, + 1121, 1122, 1123, 1122, 1124, 1123, 1123, 1124, 1075, 1124, 1076, 1075, + 1075, 1076, 1073, 1076, 1074, 1073, 1073, 1074, 1125, 1074, 1126, 1125, + 1125, 1126, 1127, 1126, 1128, 1127, 1127, 1128, 1129, 1128, 1130, 1129, + 1129, 1130, 1115, 1130, 1116, 1115, 1115, 1116, 1113, 1116, 1114, 1113, + 1113, 1114, 1121, 1114, 1122, 1121, 1121, 1121, 1123, 1121, 1123, 1123, + 1123, 1123, 1075, 1123, 1075, 1075, 1075, 1075, 1073, 1075, 1073, 1073, + 1073, 1073, 1125, 1073, 1125, 1125, 1125, 1125, 1127, 1125, 1127, 1127, + 1127, 1127, 1129, 1127, 1129, 1129, 1129, 1129, 1115, 1129, 1115, 1115, + 1115, 1115, 1113, 1115, 1113, 1113, 1113, 1113, 1121, 1113, 1121, 1121, + 1123, 1124, 1121, 1124, 1122, 1121, 1121, 1122, 1055, 1122, 1056, 1055, + 1055, 1056, 1053, 1056, 1054, 1053, 1053, 1054, 1123, 1054, 1124, 1123, + 1123, 1123, 1121, 1123, 1121, 1121, 1121, 1121, 1055, 1121, 1055, 1055, + 1055, 1055, 1053, 1055, 1053, 1053, 1053, 1053, 1123, 1053, 1123, 1123, + 1131, 1132, 1133, 1132, 1134, 1133, 1133, 1134, 1135, 1134, 1136, 1135, + 1135, 1136, 1137, 1136, 1138, 1137, 1137, 1138, 1139, 1138, 1140, 1139, + 1139, 1140, 1141, 1140, 1142, 1141, 1141, 1142, 1131, 1142, 1132, 1131, + 1131, 1131, 1133, 1131, 1133, 1133, 1133, 1133, 1135, 1133, 1135, 1135, + 1135, 1135, 1137, 1135, 1137, 1137, 1137, 1137, 1139, 1137, 1139, 1139, + 1139, 1139, 1141, 1139, 1141, 1141, 1141, 1141, 1131, 1141, 1131, 1131, + 1143, 1144, 1141, 1144, 1142, 1141, 1141, 1142, 1139, 1142, 1140, 1139, + 1139, 1140, 1145, 1140, 1146, 1145, 1145, 1146, 1147, 1146, 1148, 1147, + 1147, 1148, 1149, 1148, 1150, 1149, 1149, 1150, 1151, 1150, 1152, 1151, + 1151, 1152, 1153, 1152, 1154, 1153, 1153, 1154, 1155, 1154, 1156, 1155, + 1155, 1156, 1143, 1156, 1144, 1143, 1143, 1143, 1141, 1143, 1141, 1141, + 1141, 1141, 1139, 1141, 1139, 1139, 1139, 1139, 1145, 1139, 1145, 1145, + 1145, 1145, 1147, 1145, 1147, 1147, 1147, 1147, 1149, 1147, 1149, 1149, + 1149, 1149, 1151, 1149, 1151, 1151, 1151, 1151, 1153, 1151, 1153, 1153, + 1153, 1153, 1155, 1153, 1155, 1155, 1155, 1155, 1143, 1155, 1143, 1143, + 409, 410, 407, 410, 408, 407, 407, 408, 1157, 408, 1158, 1157, + 1157, 1158, 1159, 1158, 1160, 1159, 1159, 1160, 1135, 1160, 1136, 1135, + 1135, 1136, 1133, 1136, 1134, 1133, 1133, 1134, 1161, 1134, 1162, 1161, + 1161, 1162, 409, 1162, 410, 409, 409, 409, 407, 409, 407, 407, + 407, 407, 1157, 407, 1157, 1157, 1157, 1157, 1159, 1157, 1159, 1159, + 1159, 1159, 1135, 1159, 1135, 1135, 1135, 1135, 1133, 1135, 1133, 1133, + 1133, 1133, 1161, 1133, 1161, 1161, 1161, 1161, 409, 1161, 409, 409, + 1163, 1164, 1165, 1164, 1166, 1165, 1165, 1166, 1167, 1166, 1168, 1167, + 1167, 1168, 1169, 1168, 1170, 1169, 1169, 1170, 1171, 1170, 1172, 1171, + 1171, 1172, 1173, 1172, 1174, 1173, 1173, 1174, 1175, 1174, 1176, 1175, + 1175, 1176, 1177, 1176, 1178, 1177, 1177, 1178, 1179, 1178, 1180, 1179, + 1179, 1180, 1181, 1180, 1182, 1181, 1181, 1182, 1183, 1182, 1184, 1183, + 1183, 1184, 1185, 1184, 1186, 1185, 1185, 1186, 1187, 1186, 1188, 1187, + 1187, 1188, 1189, 1188, 1190, 1189, 1189, 1190, 1191, 1190, 1192, 1191, + 1191, 1192, 1193, 1192, 1194, 1193, 1193, 1194, 1195, 1194, 1196, 1195, + 1195, 1196, 1197, 1196, 1198, 1197, 1197, 1198, 1199, 1198, 1200, 1199, + 1199, 1200, 1201, 1200, 1202, 1201, 1201, 1202, 1203, 1202, 1204, 1203, + 1203, 1204, 1205, 1204, 1206, 1205, 1205, 1206, 1207, 1206, 1208, 1207, + 1207, 1208, 1209, 1208, 1210, 1209, 1209, 1210, 1211, 1210, 1212, 1211, + 1211, 1212, 1213, 1212, 1214, 1213, 1213, 1214, 1215, 1214, 1216, 1215, + 1215, 1216, 1217, 1216, 1218, 1217, 1217, 1218, 1219, 1218, 1220, 1219, + 1219, 1220, 1221, 1220, 1222, 1221, 1221, 1222, 1223, 1222, 1224, 1223, + 1223, 1224, 1225, 1224, 1226, 1225, 1225, 1226, 1227, 1226, 1228, 1227, + 1227, 1228, 1229, 1228, 1230, 1229, 1229, 1230, 1231, 1230, 1232, 1231, + 1231, 1232, 1233, 1232, 1234, 1233, 1233, 1234, 1235, 1234, 1236, 1235, + 1235, 1236, 1237, 1236, 1238, 1237, 1237, 1238, 1239, 1238, 1240, 1239, + 1239, 1240, 1241, 1240, 1242, 1241, 1241, 1242, 1243, 1242, 1244, 1243, + 1243, 1244, 1245, 1244, 1246, 1245, 1245, 1246, 1247, 1246, 1248, 1247, + 1247, 1248, 1249, 1248, 1250, 1249, 1249, 1250, 1251, 1250, 1252, 1251, + 1251, 1252, 1253, 1252, 1254, 1253, 1253, 1254, 1255, 1254, 1256, 1255, + 1255, 1256, 1257, 1256, 1258, 1257, 1257, 1258, 1259, 1258, 1260, 1259, + 1259, 1260, 1261, 1260, 1262, 1261, 1261, 1262, 1263, 1262, 1264, 1263, + 1263, 1264, 1265, 1264, 1266, 1265, 1265, 1266, 1267, 1266, 1268, 1267, + 1267, 1268, 1269, 1268, 1270, 1269, 1269, 1270, 1271, 1270, 1272, 1271, + 1271, 1272, 1273, 1272, 1274, 1273, 1273, 1274, 1275, 1274, 1276, 1275, + 1275, 1276, 1277, 1276, 1278, 1277, 1277, 1278, 1279, 1278, 1280, 1279, + 1279, 1280, 1281, 1280, 1282, 1281, 1281, 1282, 1283, 1282, 1284, 1283, + 1283, 1284, 1285, 1284, 1286, 1285, 1285, 1286, 1287, 1286, 1288, 1287, + 1287, 1288, 1289, 1288, 1290, 1289, 1289, 1290, 1291, 1290, 1292, 1291, + 1291, 1292, 1293, 1292, 1294, 1293, 1293, 1294, 1295, 1294, 1296, 1295, + 1295, 1296, 1163, 1296, 1164, 1163, 1163, 1163, 1165, 1163, 1165, 1165, + 1165, 1165, 1167, 1165, 1167, 1167, 1167, 1167, 1169, 1167, 1169, 1169, + 1169, 1169, 1171, 1169, 1171, 1171, 1171, 1171, 1173, 1171, 1173, 1173, + 1173, 1173, 1175, 1173, 1175, 1175, 1175, 1175, 1177, 1175, 1177, 1177, + 1177, 1177, 1179, 1177, 1179, 1179, 1179, 1179, 1181, 1179, 1181, 1181, + 1181, 1181, 1183, 1181, 1183, 1183, 1183, 1183, 1185, 1183, 1185, 1185, + 1185, 1185, 1187, 1185, 1187, 1187, 1187, 1187, 1189, 1187, 1189, 1189, + 1189, 1189, 1191, 1189, 1191, 1191, 1191, 1191, 1193, 1191, 1193, 1193, + 1193, 1193, 1195, 1193, 1195, 1195, 1195, 1195, 1197, 1195, 1197, 1197, + 1197, 1197, 1199, 1197, 1199, 1199, 1199, 1199, 1201, 1199, 1201, 1201, + 1201, 1201, 1203, 1201, 1203, 1203, 1203, 1203, 1205, 1203, 1205, 1205, + 1205, 1205, 1207, 1205, 1207, 1207, 1207, 1207, 1209, 1207, 1209, 1209, + 1209, 1209, 1211, 1209, 1211, 1211, 1211, 1211, 1213, 1211, 1213, 1213, + 1213, 1213, 1215, 1213, 1215, 1215, 1215, 1215, 1217, 1215, 1217, 1217, + 1217, 1217, 1219, 1217, 1219, 1219, 1219, 1219, 1221, 1219, 1221, 1221, + 1221, 1221, 1223, 1221, 1223, 1223, 1223, 1223, 1225, 1223, 1225, 1225, + 1225, 1225, 1227, 1225, 1227, 1227, 1227, 1227, 1229, 1227, 1229, 1229, + 1229, 1229, 1231, 1229, 1231, 1231, 1231, 1231, 1233, 1231, 1233, 1233, + 1233, 1233, 1235, 1233, 1235, 1235, 1235, 1235, 1237, 1235, 1237, 1237, + 1237, 1237, 1239, 1237, 1239, 1239, 1239, 1239, 1241, 1239, 1241, 1241, + 1241, 1241, 1243, 1241, 1243, 1243, 1243, 1243, 1245, 1243, 1245, 1245, + 1245, 1245, 1247, 1245, 1247, 1247, 1247, 1247, 1249, 1247, 1249, 1249, + 1249, 1249, 1251, 1249, 1251, 1251, 1251, 1251, 1253, 1251, 1253, 1253, + 1253, 1253, 1255, 1253, 1255, 1255, 1255, 1255, 1257, 1255, 1257, 1257, + 1257, 1257, 1259, 1257, 1259, 1259, 1259, 1259, 1261, 1259, 1261, 1261, + 1261, 1261, 1263, 1261, 1263, 1263, 1263, 1263, 1265, 1263, 1265, 1265, + 1265, 1265, 1267, 1265, 1267, 1267, 1267, 1267, 1269, 1267, 1269, 1269, + 1269, 1269, 1271, 1269, 1271, 1271, 1271, 1271, 1273, 1271, 1273, 1273, + 1273, 1273, 1275, 1273, 1275, 1275, 1275, 1275, 1277, 1275, 1277, 1277, + 1277, 1277, 1279, 1277, 1279, 1279, 1279, 1279, 1281, 1279, 1281, 1281, + 1281, 1281, 1283, 1281, 1283, 1283, 1283, 1283, 1285, 1283, 1285, 1285, + 1285, 1285, 1287, 1285, 1287, 1287, 1287, 1287, 1289, 1287, 1289, 1289, + 1289, 1289, 1291, 1289, 1291, 1291, 1291, 1291, 1293, 1291, 1293, 1293, + 1293, 1293, 1295, 1293, 1295, 1295, 1295, 1295, 1163, 1295, 1163, 1163, + 1297, 1298, 1299, 1298, 1300, 1299, 1299, 1300, 1301, 1300, 1302, 1301, + 1301, 1302, 1303, 1302, 1304, 1303, 1303, 1304, 1305, 1304, 1306, 1305, + 1305, 1306, 1307, 1306, 1308, 1307, 1307, 1308, 1309, 1308, 1310, 1309, + 1309, 1310, 1311, 1310, 1312, 1311, 1311, 1312, 1313, 1312, 1314, 1313, + 1313, 1314, 1315, 1314, 1316, 1315, 1315, 1316, 1297, 1316, 1298, 1297, + 1297, 1297, 1299, 1297, 1299, 1299, 1299, 1299, 1301, 1299, 1301, 1301, + 1301, 1301, 1303, 1301, 1303, 1303, 1303, 1303, 1305, 1303, 1305, 1305, + 1305, 1305, 1307, 1305, 1307, 1307, 1307, 1307, 1309, 1307, 1309, 1309, + 1309, 1309, 1311, 1309, 1311, 1311, 1311, 1311, 1313, 1311, 1313, 1313, + 1313, 1313, 1315, 1313, 1315, 1315, 1315, 1315, 1297, 1315, 1297, 1297, + 1317, 1318, 1319, 1318, 1320, 1319, 1319, 1320, 1321, 1320, 1322, 1321, + 1321, 1322, 1323, 1322, 1324, 1323, 1323, 1324, 1317, 1324, 1318, 1317, + 1317, 1317, 1319, 1317, 1319, 1319, 1319, 1319, 1321, 1319, 1321, 1321, + 1321, 1321, 1323, 1321, 1323, 1323, 1323, 1323, 1317, 1323, 1317, 1317, + 1325, 1324, 1326, 1324, 1322, 1326, 1326, 1322, 1327, 1322, 1328, 1327, + 1327, 1328, 1329, 1328, 1330, 1329, 1329, 1330, 1331, 1330, 1332, 1331, + 1331, 1332, 1325, 1332, 1324, 1325, 1325, 1325, 1326, 1325, 1326, 1326, + 1326, 1326, 1327, 1326, 1327, 1327, 1327, 1327, 1329, 1327, 1329, 1329, + 1329, 1329, 1331, 1329, 1331, 1331, 1331, 1331, 1325, 1331, 1325, 1325, + 1333, 1334, 1335, 1334, 1336, 1335, 1335, 1336, 1337, 1336, 1338, 1337, + 1337, 1338, 1339, 1338, 1306, 1339, 1339, 1306, 1340, 1306, 1304, 1340, + 1340, 1304, 1341, 1304, 1342, 1341, 1341, 1342, 1333, 1342, 1334, 1333, + 1333, 1333, 1335, 1333, 1335, 1335, 1335, 1335, 1337, 1335, 1337, 1337, + 1337, 1337, 1339, 1337, 1339, 1339, 1339, 1339, 1340, 1339, 1340, 1340, + 1340, 1340, 1341, 1340, 1341, 1341, 1341, 1341, 1333, 1341, 1333, 1333, + 1331, 1332, 1329, 1332, 1330, 1329, 1329, 1330, 1327, 1330, 1328, 1327, + 1327, 1328, 1343, 1328, 1344, 1343, 1343, 1344, 1345, 1344, 1346, 1345, + 1345, 1346, 1347, 1346, 1348, 1347, 1347, 1348, 1349, 1348, 1350, 1349, + 1349, 1350, 1351, 1350, 1352, 1351, 1351, 1352, 1331, 1352, 1332, 1331, + 1331, 1331, 1329, 1331, 1329, 1329, 1329, 1329, 1327, 1329, 1327, 1327, + 1327, 1327, 1343, 1327, 1343, 1343, 1343, 1343, 1345, 1343, 1345, 1345, + 1345, 1345, 1347, 1345, 1347, 1347, 1347, 1347, 1349, 1347, 1349, 1349, + 1349, 1349, 1351, 1349, 1351, 1351, 1351, 1351, 1331, 1351, 1331, 1331, + 1531, 1532, 1533, 1532, 1534, 1533, 1533, 1534, 1535, 1534, 1536, 1535, + 1535, 1536, 1537, 1536, 1538, 1537, 1537, 1538, 1539, 1538, 1540, 1539, + 1539, 1540, 1541, 1540, 1542, 1541, 1541, 1542, 1543, 1542, 1544, 1543, + 1543, 1544, 1545, 1544, 1546, 1545, 1545, 1546, 1547, 1546, 1548, 1547, + 1547, 1548, 1549, 1548, 1550, 1549, 1549, 1550, 1531, 1550, 1532, 1531, + 1531, 1531, 1533, 1531, 1533, 1533, 1533, 1533, 1535, 1533, 1535, 1535, + 1535, 1535, 1537, 1535, 1537, 1537, 1537, 1537, 1539, 1537, 1539, 1539, + 1539, 1539, 1541, 1539, 1541, 1541, 1541, 1541, 1543, 1541, 1543, 1543, + 1543, 1543, 1545, 1543, 1545, 1545, 1545, 1545, 1547, 1545, 1547, 1547, + 1547, 1547, 1549, 1547, 1549, 1549, 1549, 1549, 1531, 1549, 1531, 1531, + 1551, 1552, 1553, 1552, 1554, 1553, 1553, 1554, 1555, 1554, 1556, 1555, + 1555, 1556, 1557, 1556, 1558, 1557, 1557, 1558, 1559, 1558, 1560, 1559, + 1559, 1560, 1551, 1560, 1552, 1551, 1551, 1551, 1553, 1551, 1553, 1553, + 1553, 1553, 1555, 1553, 1555, 1555, 1555, 1555, 1557, 1555, 1557, 1557, + 1557, 1557, 1559, 1557, 1559, 1559, 1559, 1559, 1551, 1559, 1551, 1551, + 1561, 1540, 1562, 1540, 1563, 1562, 1562, 1563, 1564, 1563, 1565, 1564, + 1564, 1565, 1566, 1565, 1567, 1566, 1566, 1567, 1568, 1567, 1569, 1568, + 1568, 1569, 1570, 1569, 1571, 1570, 1570, 1571, 1572, 1571, 1542, 1572, + 1572, 1542, 1561, 1542, 1540, 1561, 1561, 1561, 1562, 1561, 1562, 1562, + 1562, 1562, 1564, 1562, 1564, 1564, 1564, 1564, 1566, 1564, 1566, 1566, + 1566, 1566, 1568, 1566, 1568, 1568, 1568, 1568, 1570, 1568, 1570, 1570, + 1570, 1570, 1572, 1570, 1572, 1572, 1572, 1572, 1561, 1572, 1561, 1561, + 1553, 1554, 1551, 1554, 1552, 1551, 1551, 1552, 1573, 1552, 1574, 1573, + 1573, 1574, 1575, 1574, 1576, 1575, 1575, 1576, 1577, 1576, 1578, 1577, + 1577, 1578, 1568, 1578, 1569, 1568, 1568, 1569, 1566, 1569, 1567, 1566, + 1566, 1567, 1579, 1567, 1580, 1579, 1579, 1580, 1581, 1580, 1582, 1581, + 1581, 1582, 1553, 1582, 1554, 1553, 1553, 1553, 1551, 1553, 1551, 1551, + 1551, 1551, 1573, 1551, 1573, 1573, 1573, 1573, 1575, 1573, 1575, 1575, + 1575, 1575, 1577, 1575, 1577, 1577, 1577, 1577, 1568, 1577, 1568, 1568, + 1568, 1568, 1566, 1568, 1566, 1566, 1566, 1566, 1579, 1566, 1579, 1579, + 1579, 1579, 1581, 1579, 1581, 1581, 1581, 1581, 1553, 1581, 1553, 1553, + 1583, 1584, 1585, 1584, 1586, 1585, 1585, 1586, 1587, 1586, 1588, 1587, + 1587, 1588, 1589, 1588, 1590, 1589, 1589, 1590, 1591, 1590, 1592, 1591, + 1591, 1592, 1593, 1592, 1594, 1593, 1593, 1594, 1595, 1594, 1596, 1595, + 1595, 1596, 1597, 1596, 1598, 1597, 1597, 1598, 1583, 1598, 1584, 1583, + 1583, 1583, 1585, 1583, 1585, 1585, 1585, 1585, 1587, 1585, 1587, 1587, + 1587, 1587, 1589, 1587, 1589, 1589, 1589, 1589, 1591, 1589, 1591, 1591, + 1591, 1591, 1593, 1591, 1593, 1593, 1593, 1593, 1595, 1593, 1595, 1595, + 1595, 1595, 1597, 1595, 1597, 1597, 1597, 1597, 1583, 1597, 1583, 1583, + 1559, 1560, 1583, 1560, 1584, 1583, 1583, 1584, 1597, 1584, 1598, 1597, + 1597, 1598, 1595, 1598, 1596, 1595, 1595, 1596, 1593, 1596, 1594, 1593, + 1593, 1594, 1599, 1594, 1600, 1599, 1599, 1600, 1575, 1600, 1576, 1575, + 1575, 1576, 1573, 1576, 1574, 1573, 1573, 1574, 1551, 1574, 1552, 1551, + 1551, 1552, 1559, 1552, 1560, 1559, 1559, 1559, 1583, 1559, 1583, 1583, + 1583, 1583, 1597, 1583, 1597, 1597, 1597, 1597, 1595, 1597, 1595, 1595, + 1595, 1595, 1593, 1595, 1593, 1593, 1593, 1593, 1599, 1593, 1599, 1599, + 1599, 1599, 1575, 1599, 1575, 1575, 1575, 1575, 1573, 1575, 1573, 1573, + 1573, 1573, 1551, 1573, 1551, 1551, 1551, 1551, 1559, 1551, 1559, 1559, + 1601, 1602, 1603, 1602, 1604, 1603, 1603, 1604, 1605, 1604, 1606, 1605, + 1605, 1606, 1607, 1606, 1608, 1607, 1607, 1608, 1609, 1608, 1610, 1609, + 1609, 1610, 1611, 1610, 1538, 1611, 1611, 1538, 1612, 1538, 1536, 1612, + 1612, 1536, 1613, 1536, 1534, 1613, 1613, 1534, 1614, 1534, 1615, 1614, + 1614, 1615, 1616, 1615, 1617, 1616, 1616, 1617, 1618, 1617, 1619, 1618, + 1618, 1619, 1620, 1619, 1621, 1620, 1620, 1621, 1622, 1621, 1623, 1622, + 1622, 1623, 1624, 1623, 1625, 1624, 1624, 1625, 1626, 1625, 1627, 1626, + 1626, 1627, 1628, 1627, 1629, 1628, 1628, 1629, 1601, 1629, 1602, 1601, + 1601, 1601, 1603, 1601, 1603, 1603, 1603, 1603, 1605, 1603, 1605, 1605, + 1605, 1605, 1607, 1605, 1607, 1607, 1607, 1607, 1609, 1607, 1609, 1609, + 1609, 1609, 1611, 1609, 1611, 1611, 1611, 1611, 1612, 1611, 1612, 1612, + 1612, 1612, 1613, 1612, 1613, 1613, 1613, 1613, 1614, 1613, 1614, 1614, + 1614, 1614, 1616, 1614, 1616, 1616, 1616, 1616, 1618, 1616, 1618, 1618, + 1618, 1618, 1620, 1618, 1620, 1620, 1620, 1620, 1622, 1620, 1622, 1622, + 1622, 1622, 1624, 1622, 1624, 1624, 1624, 1624, 1626, 1624, 1626, 1626, + 1626, 1626, 1628, 1626, 1628, 1628, 1628, 1628, 1601, 1628, 1601, 1601, + 1630, 1631, 1632, 1631, 1633, 1632, 1632, 1633, 1634, 1633, 1635, 1634, + 1634, 1635, 1636, 1635, 1627, 1636, 1636, 1627, 1637, 1627, 1625, 1637, + 1637, 1625, 1638, 1625, 1623, 1638, 1638, 1623, 1639, 1623, 1621, 1639, + 1639, 1621, 1640, 1621, 1619, 1640, 1640, 1619, 1630, 1619, 1631, 1630, + 1630, 1630, 1632, 1630, 1632, 1632, 1632, 1632, 1634, 1632, 1634, 1634, + 1634, 1634, 1636, 1634, 1636, 1636, 1636, 1636, 1637, 1636, 1637, 1637, + 1637, 1637, 1638, 1637, 1638, 1638, 1638, 1638, 1639, 1638, 1639, 1639, + 1639, 1639, 1640, 1639, 1640, 1640, 1640, 1640, 1630, 1640, 1630, 1630, + 1641, 1642, 1643, 1642, 1644, 1643, 1643, 1644, 1645, 1644, 1646, 1645, + 1645, 1646, 1647, 1646, 1648, 1647, 1647, 1648, 1649, 1648, 1650, 1649, + 1649, 1650, 1651, 1650, 1652, 1651, 1651, 1652, 1653, 1652, 1654, 1653, + 1653, 1654, 1655, 1654, 1656, 1655, 1655, 1656, 1657, 1656, 1658, 1657, + 1657, 1658, 1659, 1658, 1660, 1659, 1659, 1660, 1641, 1660, 1642, 1641, + 1641, 1641, 1643, 1641, 1643, 1643, 1643, 1643, 1645, 1643, 1645, 1645, + 1645, 1645, 1647, 1645, 1647, 1647, 1647, 1647, 1649, 1647, 1649, 1649, + 1649, 1649, 1651, 1649, 1651, 1651, 1651, 1651, 1653, 1651, 1653, 1653, + 1653, 1653, 1655, 1653, 1655, 1655, 1655, 1655, 1657, 1655, 1657, 1657, + 1657, 1657, 1659, 1657, 1659, 1659, 1659, 1659, 1641, 1659, 1641, 1641, + 1653, 1654, 1661, 1654, 1662, 1661, 1661, 1662, 221, 1662, 222, 221, + 221, 222, 219, 222, 220, 219, 219, 220, 1663, 220, 1664, 1663, + 1663, 1664, 1665, 1664, 1666, 1665, 1665, 1666, 211, 1666, 212, 211, + 211, 212, 209, 212, 210, 209, 209, 210, 1667, 210, 1668, 1667, + 1667, 1668, 1655, 1668, 1656, 1655, 1655, 1656, 1653, 1656, 1654, 1653, + 1653, 1653, 1661, 1653, 1661, 1661, 1661, 1661, 221, 1661, 221, 221, + 221, 221, 219, 221, 219, 219, 219, 219, 1663, 219, 1663, 1663, + 1663, 1663, 1665, 1663, 1665, 1665, 1665, 1665, 211, 1665, 211, 211, + 211, 211, 209, 211, 209, 209, 209, 209, 1667, 209, 1667, 1667, + 1667, 1667, 1655, 1667, 1655, 1655, 1655, 1655, 1653, 1655, 1653, 1653, + 1641, 1642, 1659, 1642, 1660, 1659, 1659, 1660, 1669, 1660, 1670, 1669, + 1669, 1670, 1671, 1670, 1672, 1671, 1671, 1672, 1673, 1672, 1674, 1673, + 1673, 1674, 1675, 1674, 1676, 1675, 1675, 1676, 1649, 1676, 1650, 1649, + 1649, 1650, 1647, 1650, 1648, 1647, 1647, 1648, 1677, 1648, 1678, 1677, + 1677, 1678, 1679, 1678, 1680, 1679, 1679, 1680, 1641, 1680, 1642, 1641, + 1641, 1641, 1659, 1641, 1659, 1659, 1659, 1659, 1669, 1659, 1669, 1669, + 1669, 1669, 1671, 1669, 1671, 1671, 1671, 1671, 1673, 1671, 1673, 1673, + 1673, 1673, 1675, 1673, 1675, 1675, 1675, 1675, 1649, 1675, 1649, 1649, + 1649, 1649, 1647, 1649, 1647, 1647, 1647, 1647, 1677, 1647, 1677, 1677, + 1677, 1677, 1679, 1677, 1679, 1679, 1679, 1679, 1641, 1679, 1641, 1641, + 1673, 1674, 1671, 1674, 1672, 1671, 1671, 1672, 1681, 1672, 1682, 1681, + 1681, 1682, 1683, 1682, 1684, 1683, 1683, 1684, 1685, 1684, 1686, 1685, + 1685, 1686, 1687, 1686, 1688, 1687, 1687, 1688, 1689, 1688, 1690, 1689, + 1689, 1690, 1691, 1690, 1692, 1691, 1691, 1692, 1693, 1692, 1694, 1693, + 1693, 1694, 1695, 1694, 1696, 1695, 1695, 1696, 1673, 1696, 1674, 1673, + 1673, 1673, 1671, 1673, 1671, 1671, 1671, 1671, 1681, 1671, 1681, 1681, + 1681, 1681, 1683, 1681, 1683, 1683, 1683, 1683, 1685, 1683, 1685, 1685, + 1685, 1685, 1687, 1685, 1687, 1687, 1687, 1687, 1689, 1687, 1689, 1689, + 1689, 1689, 1691, 1689, 1691, 1691, 1691, 1691, 1693, 1691, 1693, 1693, + 1693, 1693, 1695, 1693, 1695, 1695, 1695, 1695, 1673, 1695, 1673, 1673, + 1697, 1698, 1699, 1698, 1700, 1699, 1699, 1700, 1701, 1700, 1702, 1701, + 1701, 1702, 1703, 1702, 1704, 1703, 1703, 1704, 1705, 1704, 1706, 1705, + 1705, 1706, 1707, 1706, 1708, 1707, 1707, 1708, 1709, 1708, 1710, 1709, + 1709, 1710, 1711, 1710, 1712, 1711, 1711, 1712, 1713, 1712, 1714, 1713, + 1713, 1714, 1715, 1714, 1716, 1715, 1715, 1716, 1717, 1716, 1718, 1717, + 1717, 1718, 1719, 1718, 1720, 1719, 1719, 1720, 1721, 1720, 1722, 1721, + 1721, 1722, 1723, 1722, 1724, 1723, 1723, 1724, 1725, 1724, 1726, 1725, + 1725, 1726, 1727, 1726, 1728, 1727, 1727, 1728, 1729, 1728, 1730, 1729, + 1729, 1730, 1697, 1730, 1698, 1697, 1697, 1697, 1699, 1697, 1699, 1699, + 1699, 1699, 1701, 1699, 1701, 1701, 1701, 1701, 1703, 1701, 1703, 1703, + 1703, 1703, 1705, 1703, 1705, 1705, 1705, 1705, 1707, 1705, 1707, 1707, + 1707, 1707, 1709, 1707, 1709, 1709, 1709, 1709, 1711, 1709, 1711, 1711, + 1711, 1711, 1713, 1711, 1713, 1713, 1713, 1713, 1715, 1713, 1715, 1715, + 1715, 1715, 1717, 1715, 1717, 1717, 1717, 1717, 1719, 1717, 1719, 1719, + 1719, 1719, 1721, 1719, 1721, 1721, 1721, 1721, 1723, 1721, 1723, 1723, + 1723, 1723, 1725, 1723, 1725, 1725, 1725, 1725, 1727, 1725, 1727, 1727, + 1727, 1727, 1729, 1727, 1729, 1729, 1729, 1729, 1697, 1729, 1697, 1697, + 1731, 1724, 1732, 1724, 1722, 1732, 1732, 1722, 1733, 1722, 1720, 1733, + 1733, 1720, 1734, 1720, 1718, 1734, 1734, 1718, 1731, 1718, 1724, 1731, + 1731, 1731, 1732, 1731, 1732, 1732, 1732, 1732, 1733, 1732, 1733, 1733, + 1733, 1733, 1734, 1733, 1734, 1734, 1734, 1734, 1731, 1734, 1731, 1731, + 1735, 1714, 1736, 1714, 1712, 1736, 1736, 1712, 1737, 1712, 1710, 1737, + 1737, 1710, 1738, 1710, 1708, 1738, 1738, 1708, 1735, 1708, 1714, 1735, + 1735, 1735, 1736, 1735, 1736, 1736, 1736, 1736, 1737, 1736, 1737, 1737, + 1737, 1737, 1738, 1737, 1738, 1738, 1738, 1738, 1735, 1738, 1735, 1735, + 1739, 1706, 1740, 1706, 1704, 1740, 1740, 1704, 1741, 1704, 1702, 1741, + 1741, 1702, 1742, 1702, 1700, 1742, 1742, 1700, 1743, 1700, 1744, 1743, + 1743, 1744, 1745, 1744, 1746, 1745, 1745, 1746, 1739, 1746, 1706, 1739, + 1739, 1739, 1740, 1739, 1740, 1740, 1740, 1740, 1741, 1740, 1741, 1741, + 1741, 1741, 1742, 1741, 1742, 1742, 1742, 1742, 1743, 1742, 1743, 1743, + 1743, 1743, 1745, 1743, 1745, 1745, 1745, 1745, 1739, 1745, 1739, 1739, + 1747, 1748, 1749, 1748, 1750, 1749, 1749, 1750, 1751, 1750, 1752, 1751, + 1751, 1752, 1753, 1752, 1754, 1753, 1753, 1754, 1755, 1754, 1756, 1755, + 1755, 1756, 1757, 1756, 1758, 1757, 1757, 1758, 1759, 1758, 1760, 1759, + 1759, 1760, 1761, 1760, 1762, 1761, 1761, 1762, 1763, 1762, 1764, 1763, + 1763, 1764, 1765, 1764, 1766, 1765, 1765, 1766, 1693, 1766, 1694, 1693, + 1693, 1694, 1691, 1694, 1692, 1691, 1691, 1692, 1685, 1692, 1686, 1685, + 1685, 1686, 1683, 1686, 1684, 1683, 1683, 1684, 1767, 1684, 1768, 1767, + 1767, 1768, 1769, 1768, 1770, 1769, 1769, 1770, 1747, 1770, 1748, 1747, + 1747, 1747, 1749, 1747, 1749, 1749, 1749, 1749, 1751, 1749, 1751, 1751, + 1751, 1751, 1753, 1751, 1753, 1753, 1753, 1753, 1755, 1753, 1755, 1755, + 1755, 1755, 1757, 1755, 1757, 1757, 1757, 1757, 1759, 1757, 1759, 1759, + 1759, 1759, 1761, 1759, 1761, 1761, 1761, 1761, 1763, 1761, 1763, 1763, + 1763, 1763, 1765, 1763, 1765, 1765, 1765, 1765, 1693, 1765, 1693, 1693, + 1693, 1693, 1691, 1693, 1691, 1691, 1691, 1691, 1685, 1691, 1685, 1685, + 1685, 1685, 1683, 1685, 1683, 1683, 1683, 1683, 1767, 1683, 1767, 1767, + 1767, 1767, 1769, 1767, 1769, 1769, 1769, 1769, 1747, 1769, 1747, 1747, + 1753, 1754, 1771, 1754, 1772, 1771, 1771, 1772, 1773, 1772, 1774, 1773, + 1773, 1774, 1775, 1774, 1776, 1775, 1775, 1776, 1747, 1776, 1748, 1747, + 1747, 1748, 1769, 1748, 1770, 1769, 1769, 1770, 1777, 1770, 1778, 1777, + 1777, 1778, 1779, 1778, 1780, 1779, 1779, 1780, 1781, 1780, 1782, 1781, + 1781, 1782, 1783, 1782, 1784, 1783, 1783, 1784, 1785, 1784, 1786, 1785, + 1785, 1786, 1787, 1786, 1788, 1787, 1787, 1788, 1763, 1788, 1764, 1763, + 1763, 1764, 1761, 1764, 1762, 1761, 1761, 1762, 1789, 1762, 1790, 1789, + 1789, 1790, 1791, 1790, 1792, 1791, 1791, 1792, 1793, 1792, 1794, 1793, + 1793, 1794, 1755, 1794, 1756, 1755, 1755, 1756, 1753, 1756, 1754, 1753, + 1753, 1753, 1771, 1753, 1771, 1771, 1771, 1771, 1773, 1771, 1773, 1773, + 1773, 1773, 1775, 1773, 1775, 1775, 1775, 1775, 1747, 1775, 1747, 1747, + 1747, 1747, 1769, 1747, 1769, 1769, 1769, 1769, 1777, 1769, 1777, 1777, + 1777, 1777, 1779, 1777, 1779, 1779, 1779, 1779, 1781, 1779, 1781, 1781, + 1781, 1781, 1783, 1781, 1783, 1783, 1783, 1783, 1785, 1783, 1785, 1785, + 1785, 1785, 1787, 1785, 1787, 1787, 1787, 1787, 1763, 1787, 1763, 1763, + 1763, 1763, 1761, 1763, 1761, 1761, 1761, 1761, 1789, 1761, 1789, 1789, + 1789, 1789, 1791, 1789, 1791, 1791, 1791, 1791, 1793, 1791, 1793, 1793, + 1793, 1793, 1755, 1793, 1755, 1755, 1755, 1755, 1753, 1755, 1753, 1753, + 1795, 1796, 1797, 1796, 1798, 1797, 1797, 1798, 1799, 1798, 1800, 1799, + 1799, 1800, 1801, 1800, 1802, 1801, 1801, 1802, 1795, 1802, 1796, 1795, + 1795, 1795, 1797, 1795, 1797, 1797, 1797, 1797, 1799, 1797, 1799, 1799, + 1799, 1799, 1801, 1799, 1801, 1801, 1801, 1801, 1795, 1801, 1795, 1795, + 1803, 1804, 1805, 1804, 1806, 1805, 1805, 1806, 1807, 1806, 1808, 1807, + 1807, 1808, 1809, 1808, 1810, 1809, 1809, 1810, 1811, 1810, 1812, 1811, + 1811, 1812, 1803, 1812, 1804, 1803, 1803, 1803, 1805, 1803, 1805, 1805, + 1805, 1805, 1807, 1805, 1807, 1807, 1807, 1807, 1809, 1807, 1809, 1809, + 1809, 1809, 1811, 1809, 1811, 1811, 1811, 1811, 1803, 1811, 1803, 1803, + 1813, 1814, 1815, 1814, 1816, 1815, 1815, 1816, 1817, 1816, 1818, 1817, + 1817, 1818, 1819, 1818, 1810, 1819, 1819, 1810, 1820, 1810, 1808, 1820, + 1820, 1808, 1813, 1808, 1814, 1813, 1813, 1813, 1815, 1813, 1815, 1815, + 1815, 1815, 1817, 1815, 1817, 1817, 1817, 1817, 1819, 1817, 1819, 1819, + 1819, 1819, 1820, 1819, 1820, 1820, 1820, 1820, 1813, 1820, 1813, 1813, + 1815, 1816, 1813, 1816, 1814, 1813, 1813, 1814, 1797, 1814, 1798, 1797, + 1797, 1798, 1795, 1798, 1796, 1795, 1795, 1796, 1821, 1796, 1822, 1821, + 1821, 1822, 1815, 1822, 1816, 1815, 1815, 1815, 1813, 1815, 1813, 1813, + 1813, 1813, 1797, 1813, 1797, 1797, 1797, 1797, 1795, 1797, 1795, 1795, + 1795, 1795, 1821, 1795, 1821, 1821, 1821, 1821, 1815, 1821, 1815, 1815, + 225, 226, 1823, 226, 1824, 1823, 1823, 1824, 1825, 1824, 1826, 1825, + 1825, 1826, 1827, 1826, 1828, 1827, 1827, 1828, 1829, 1828, 1830, 1829, + 1829, 1830, 1831, 1830, 1832, 1831, 1831, 1832, 227, 1832, 228, 227, + 227, 228, 225, 228, 226, 225, 225, 225, 1823, 225, 1823, 1823, + 1823, 1823, 1825, 1823, 1825, 1825, 1825, 1825, 1827, 1825, 1827, 1827, + 1827, 1827, 1829, 1827, 1829, 1829, 1829, 1829, 1831, 1829, 1831, 1831, + 1831, 1831, 227, 1831, 227, 227, 227, 227, 225, 227, 225, 225, + 1803, 1804, 1833, 1804, 1834, 1833, 1833, 1834, 1835, 1834, 1836, 1835, + 1835, 1836, 1837, 1836, 1744, 1837, 1837, 1744, 1699, 1744, 1700, 1699, + 1699, 1700, 1697, 1700, 1698, 1697, 1697, 1698, 1838, 1698, 1839, 1838, + 1838, 1839, 1805, 1839, 1806, 1805, 1805, 1806, 1803, 1806, 1804, 1803, + 1803, 1803, 1833, 1803, 1833, 1833, 1833, 1833, 1835, 1833, 1835, 1835, + 1835, 1835, 1837, 1835, 1837, 1837, 1837, 1837, 1699, 1837, 1699, 1699, + 1699, 1699, 1697, 1699, 1697, 1697, 1697, 1697, 1838, 1697, 1838, 1838, + 1838, 1838, 1805, 1838, 1805, 1805, 1805, 1805, 1803, 1805, 1803, 1803, + 1840, 1841, 1842, 1841, 1843, 1842, 1842, 1843, 1844, 1843, 1845, 1844, + 1844, 1845, 1846, 1845, 1847, 1846, 1846, 1847, 1848, 1847, 1849, 1848, + 1848, 1849, 1850, 1849, 1851, 1850, 1850, 1851, 1852, 1851, 1853, 1852, + 1852, 1853, 1854, 1853, 1855, 1854, 1854, 1855, 1856, 1855, 1857, 1856, + 1856, 1857, 1858, 1857, 1859, 1858, 1858, 1859, 1860, 1859, 1861, 1860, + 1860, 1861, 1862, 1861, 1863, 1862, 1862, 1863, 1840, 1863, 1841, 1840, + 1840, 1840, 1842, 1840, 1842, 1842, 1842, 1842, 1844, 1842, 1844, 1844, + 1844, 1844, 1846, 1844, 1846, 1846, 1846, 1846, 1848, 1846, 1848, 1848, + 1848, 1848, 1850, 1848, 1850, 1850, 1850, 1850, 1852, 1850, 1852, 1852, + 1852, 1852, 1854, 1852, 1854, 1854, 1854, 1854, 1856, 1854, 1856, 1856, + 1856, 1856, 1858, 1856, 1858, 1858, 1858, 1858, 1860, 1858, 1860, 1860, + 1860, 1860, 1862, 1860, 1862, 1862, 1862, 1862, 1840, 1862, 1840, 1840, + 1864, 1865, 1866, 1865, 1867, 1866, 1866, 1867, 1868, 1867, 1869, 1868, + 1868, 1869, 1870, 1869, 1871, 1870, 1870, 1871, 1864, 1871, 1865, 1864, + 1864, 1864, 1866, 1864, 1866, 1866, 1866, 1866, 1868, 1866, 1868, 1868, + 1868, 1868, 1870, 1868, 1870, 1870, 1870, 1870, 1864, 1870, 1864, 1864, + 1872, 1873, 1874, 1873, 1875, 1874, 1874, 1875, 1876, 1875, 1877, 1876, + 1876, 1877, 1878, 1877, 1879, 1878, 1878, 1879, 1872, 1879, 1873, 1872, + 1872, 1872, 1874, 1872, 1874, 1874, 1874, 1874, 1876, 1874, 1876, 1876, + 1876, 1876, 1878, 1876, 1878, 1878, 1878, 1878, 1872, 1878, 1872, 1872, + 1880, 1881, 1882, 1881, 1883, 1882, 1882, 1883, 1884, 1883, 1885, 1884, + 1884, 1885, 1886, 1885, 348, 1886, 1886, 348, 1887, 348, 346, 1887, + 1887, 346, 1880, 346, 1881, 1880, 1880, 1880, 1882, 1880, 1882, 1882, + 1882, 1882, 1884, 1882, 1884, 1884, 1884, 1884, 1886, 1884, 1886, 1886, + 1886, 1886, 1887, 1886, 1887, 1887, 1887, 1887, 1880, 1887, 1880, 1880, + 1864, 1865, 1876, 1865, 1877, 1876, 1876, 1877, 1874, 1877, 1875, 1874, + 1874, 1875, 1888, 1875, 1889, 1888, 1888, 1889, 1866, 1889, 1867, 1866, + 1866, 1867, 1864, 1867, 1865, 1864, 1864, 1864, 1876, 1864, 1876, 1876, + 1876, 1876, 1874, 1876, 1874, 1874, 1874, 1874, 1888, 1874, 1888, 1888, + 1888, 1888, 1866, 1888, 1866, 1866, 1866, 1866, 1864, 1866, 1864, 1864, + 1848, 1849, 1890, 1849, 1891, 1890, 1890, 1891, 1892, 1891, 1893, 1892, + 1892, 1893, 267, 1893, 268, 267, 267, 268, 265, 268, 266, 265, + 265, 266, 1852, 266, 1853, 1852, 1852, 1853, 1850, 1853, 1851, 1850, + 1850, 1851, 1848, 1851, 1849, 1848, 1848, 1848, 1890, 1848, 1890, 1890, + 1890, 1890, 1892, 1890, 1892, 1892, 1892, 1892, 267, 1892, 267, 267, + 267, 267, 265, 267, 265, 265, 265, 265, 1852, 265, 1852, 1852, + 1852, 1852, 1850, 1852, 1850, 1850, 1850, 1850, 1848, 1850, 1848, 1848, + 1880, 1881, 1872, 1881, 1873, 1872, 1872, 1873, 1878, 1873, 1879, 1878, + 1878, 1879, 1894, 1879, 1895, 1894, 1894, 1895, 1896, 1895, 1897, 1896, + 1896, 1897, 1842, 1897, 1843, 1842, 1842, 1843, 1840, 1843, 1841, 1840, + 1840, 1841, 1898, 1841, 1899, 1898, 1898, 1899, 1882, 1899, 1883, 1882, + 1882, 1883, 1880, 1883, 1881, 1880, 1880, 1880, 1872, 1880, 1872, 1872, + 1872, 1872, 1878, 1872, 1878, 1878, 1878, 1878, 1894, 1878, 1894, 1894, + 1894, 1894, 1896, 1894, 1896, 1896, 1896, 1896, 1842, 1896, 1842, 1842, + 1842, 1842, 1840, 1842, 1840, 1840, 1840, 1840, 1898, 1840, 1898, 1898, + 1898, 1898, 1882, 1898, 1882, 1882, 1882, 1882, 1880, 1882, 1880, 1880, + 1900, 1901, 1902, 1901, 1903, 1902, 1902, 1903, 1904, 1903, 1905, 1904, + 1904, 1905, 1906, 1905, 1907, 1906, 1906, 1907, 1908, 1907, 1909, 1908, + 1908, 1909, 1910, 1909, 1911, 1910, 1910, 1911, 1900, 1911, 1901, 1900, + 1900, 1900, 1902, 1900, 1902, 1902, 1902, 1902, 1904, 1902, 1904, 1904, + 1904, 1904, 1906, 1904, 1906, 1906, 1906, 1906, 1908, 1906, 1908, 1908, + 1908, 1908, 1910, 1908, 1910, 1910, 1910, 1910, 1900, 1910, 1900, 1900, + 1912, 1913, 1914, 1913, 1915, 1914, 1914, 1915, 1904, 1915, 1905, 1904, + 1904, 1905, 1902, 1905, 1903, 1902, 1902, 1903, 1900, 1903, 1901, 1900, + 1900, 1901, 1916, 1901, 1917, 1916, 1916, 1917, 1912, 1917, 1913, 1912, + 1912, 1912, 1914, 1912, 1914, 1914, 1914, 1914, 1904, 1914, 1904, 1904, + 1904, 1904, 1902, 1904, 1902, 1902, 1902, 1902, 1900, 1902, 1900, 1900, + 1900, 1900, 1916, 1900, 1916, 1916, 1916, 1916, 1912, 1916, 1912, 1912, + 1918, 1919, 1920, 1919, 1921, 1920, 1920, 1921, 1922, 1921, 1923, 1922, + 1922, 1923, 1914, 1923, 1915, 1914, 1914, 1915, 1912, 1915, 1913, 1912, + 1912, 1913, 1916, 1913, 1917, 1916, 1916, 1917, 1924, 1917, 1925, 1924, + 1924, 1925, 1926, 1925, 1927, 1926, 1926, 1927, 1918, 1927, 1919, 1918, + 1918, 1918, 1920, 1918, 1920, 1920, 1920, 1920, 1922, 1920, 1922, 1922, + 1922, 1922, 1914, 1922, 1914, 1914, 1914, 1914, 1912, 1914, 1912, 1912, + 1912, 1912, 1916, 1912, 1916, 1916, 1916, 1916, 1924, 1916, 1924, 1924, + 1924, 1924, 1926, 1924, 1926, 1926, 1926, 1926, 1918, 1926, 1918, 1918, + 1920, 1921, 1918, 1921, 1919, 1918, 1918, 1919, 1926, 1919, 1927, 1926, + 1926, 1927, 1924, 1927, 1925, 1924, 1924, 1925, 1928, 1925, 1929, 1928, + 1928, 1929, 1930, 1929, 1931, 1930, 1930, 1931, 1932, 1931, 1933, 1932, + 1932, 1933, 1934, 1933, 1935, 1934, 1934, 1935, 1936, 1935, 1937, 1936, + 1936, 1937, 1938, 1937, 1939, 1938, 1938, 1939, 1920, 1939, 1921, 1920, + 1920, 1920, 1918, 1920, 1918, 1918, 1918, 1918, 1926, 1918, 1926, 1926, + 1926, 1926, 1924, 1926, 1924, 1924, 1924, 1924, 1928, 1924, 1928, 1928, + 1928, 1928, 1930, 1928, 1930, 1930, 1930, 1930, 1932, 1930, 1932, 1932, + 1932, 1932, 1934, 1932, 1934, 1934, 1934, 1934, 1936, 1934, 1936, 1936, + 1936, 1936, 1938, 1936, 1938, 1938, 1938, 1938, 1920, 1938, 1920, 1920, + 1940, 1941, 1942, 1941, 1943, 1942, 1942, 1943, 1944, 1943, 1945, 1944, + 1944, 1945, 1946, 1945, 1947, 1946, 1946, 1947, 1948, 1947, 1949, 1948, + 1948, 1949, 1950, 1949, 1951, 1950, 1950, 1951, 1940, 1951, 1941, 1940, + 1940, 1940, 1942, 1940, 1942, 1942, 1942, 1942, 1944, 1942, 1944, 1944, + 1944, 1944, 1946, 1944, 1946, 1946, 1946, 1946, 1948, 1946, 1948, 1948, + 1948, 1948, 1950, 1948, 1950, 1950, 1950, 1950, 1940, 1950, 1940, 1940, + 1948, 1949, 1946, 1949, 1947, 1946, 1946, 1947, 1944, 1947, 1945, 1944, + 1944, 1945, 1952, 1945, 1953, 1952, 1952, 1953, 1954, 1953, 1955, 1954, + 1954, 1955, 1956, 1955, 1957, 1956, 1956, 1957, 1958, 1957, 1959, 1958, + 1958, 1959, 1960, 1959, 1961, 1960, 1960, 1961, 1934, 1961, 1935, 1934, + 1934, 1935, 1932, 1935, 1933, 1932, 1932, 1933, 1930, 1933, 1931, 1930, + 1930, 1931, 1928, 1931, 1929, 1928, 1928, 1929, 1948, 1929, 1949, 1948, + 1948, 1948, 1946, 1948, 1946, 1946, 1946, 1946, 1944, 1946, 1944, 1944, + 1944, 1944, 1952, 1944, 1952, 1952, 1952, 1952, 1954, 1952, 1954, 1954, + 1954, 1954, 1956, 1954, 1956, 1956, 1956, 1956, 1958, 1956, 1958, 1958, + 1958, 1958, 1960, 1958, 1960, 1960, 1960, 1960, 1934, 1960, 1934, 1934, + 1934, 1934, 1932, 1934, 1932, 1932, 1932, 1932, 1930, 1932, 1930, 1930, + 1930, 1930, 1928, 1930, 1928, 1928, 1928, 1928, 1948, 1928, 1948, 1948, + 283, 284, 1962, 284, 308, 1962, 1962, 308, 1963, 308, 1964, 1963, + 1963, 1964, 1965, 1964, 1966, 1965, 1965, 1966, 1967, 1966, 1968, 1967, + 1967, 1968, 285, 1968, 286, 285, 285, 286, 283, 286, 284, 283, + 283, 283, 1962, 283, 1962, 1962, 1962, 1962, 1963, 1962, 1963, 1963, + 1963, 1963, 1965, 1963, 1965, 1965, 1965, 1965, 1967, 1965, 1967, 1967, + 1967, 1967, 285, 1967, 285, 285, 285, 285, 283, 285, 283, 283, + 289, 290, 1969, 290, 1970, 1969, 1969, 1970, 1971, 1970, 1972, 1971, + 1971, 1972, 1973, 1972, 1974, 1973, 1973, 1974, 1975, 1974, 1976, 1975, + 1975, 1976, 1977, 1976, 1978, 1977, 1977, 1978, 1979, 1978, 306, 1979, + 1979, 306, 281, 306, 282, 281, 281, 282, 289, 282, 290, 289, + 289, 289, 1969, 289, 1969, 1969, 1969, 1969, 1971, 1969, 1971, 1971, + 1971, 1971, 1973, 1971, 1973, 1973, 1973, 1973, 1975, 1973, 1975, 1975, + 1975, 1975, 1977, 1975, 1977, 1977, 1977, 1977, 1979, 1977, 1979, 1979, + 1979, 1979, 281, 1979, 281, 281, 281, 281, 289, 281, 289, 289, + 1533, 1534, 1531, 1534, 1532, 1531, 1531, 1532, 1632, 1532, 1633, 1632, + 1632, 1633, 1630, 1633, 1631, 1630, 1630, 1631, 1640, 1631, 1619, 1640, + 1640, 1619, 1980, 1619, 1617, 1980, 1980, 1617, 1981, 1617, 1615, 1981, + 1981, 1615, 1533, 1615, 1534, 1533, 1533, 1533, 1531, 1533, 1531, 1531, + 1531, 1531, 1632, 1531, 1632, 1632, 1632, 1632, 1630, 1632, 1630, 1630, + 1630, 1630, 1640, 1630, 1640, 1640, 1640, 1640, 1980, 1640, 1980, 1980, + 1980, 1980, 1981, 1980, 1981, 1981, 1981, 1981, 1533, 1981, 1533, 1533, + 511, 512, 509, 512, 510, 509, 509, 510, 1982, 510, 618, 1982, + 1982, 618, 1983, 618, 616, 1983, 1983, 616, 1984, 616, 1985, 1984, + 1984, 1985, 1986, 1985, 1987, 1986, 1986, 1987, 625, 1987, 626, 625, + 625, 626, 631, 626, 632, 631, 631, 632, 511, 632, 512, 511, + 511, 511, 509, 511, 509, 509, 509, 509, 1982, 509, 1982, 1982, + 1982, 1982, 1983, 1982, 1983, 1983, 1983, 1983, 1984, 1983, 1984, 1984, + 1984, 1984, 1986, 1984, 1986, 1986, 1986, 1986, 625, 1986, 625, 625, + 625, 625, 631, 625, 631, 631, 631, 631, 511, 631, 511, 511, + 491, 492, 489, 492, 490, 489, 489, 490, 1988, 490, 1989, 1988, + 1988, 1989, 1990, 1989, 1991, 1990, 1990, 1991, 1992, 1991, 1993, 1992, + 1992, 1993, 1994, 1993, 1995, 1994, 1994, 1995, 491, 1995, 492, 491, + 491, 491, 489, 491, 489, 489, 489, 489, 1988, 489, 1988, 1988, + 1988, 1988, 1990, 1988, 1990, 1990, 1990, 1990, 1992, 1990, 1992, 1992, + 1992, 1992, 1994, 1992, 1994, 1994, 1994, 1994, 491, 1994, 491, 491, + 1996, 1997, 1998, 1997, 1999, 1998, 1998, 1999, 2000, 1999, 2001, 2000, + 2000, 2001, 2002, 2001, 2003, 2002, 2002, 2003, 2004, 2003, 2005, 2004, + 2004, 2005, 2006, 2005, 2007, 2006, 2006, 2007, 2008, 2007, 2009, 2008, + 2008, 2009, 2010, 2009, 2011, 2010, 2010, 2011, 2012, 2011, 2013, 2012, + 2012, 2013, 2014, 2013, 2015, 2014, 2014, 2015, 2016, 2015, 2017, 2016, + 2016, 2017, 2018, 2017, 2019, 2018, 2018, 2019, 2020, 2019, 2021, 2020, + 2020, 2021, 1996, 2021, 1997, 1996, 1996, 1996, 1998, 1996, 1998, 1998, + 1998, 1998, 2000, 1998, 2000, 2000, 2000, 2000, 2002, 2000, 2002, 2002, + 2002, 2002, 2004, 2002, 2004, 2004, 2004, 2004, 2006, 2004, 2006, 2006, + 2006, 2006, 2008, 2006, 2008, 2008, 2008, 2008, 2010, 2008, 2010, 2010, + 2010, 2010, 2012, 2010, 2012, 2012, 2012, 2012, 2014, 2012, 2014, 2014, + 2014, 2014, 2016, 2014, 2016, 2016, 2016, 2016, 2018, 2016, 2018, 2018, + 2018, 2018, 2020, 2018, 2020, 2020, 2020, 2020, 1996, 2020, 1996, 1996, + 2022, 2023, 2024, 2023, 2025, 2024, 2024, 2025, 2026, 2025, 2027, 2026, + 2026, 2027, 2028, 2027, 2029, 2028, 2028, 2029, 2030, 2029, 2031, 2030, + 2030, 2031, 2032, 2031, 2033, 2032, 2032, 2033, 2034, 2033, 2035, 2034, + 2034, 2035, 2036, 2035, 2037, 2036, 2036, 2037, 2038, 2037, 2039, 2038, + 2038, 2039, 2040, 2039, 2041, 2040, 2040, 2041, 2042, 2041, 2043, 2042, + 2042, 2043, 2044, 2043, 2045, 2044, 2044, 2045, 2046, 2045, 2047, 2046, + 2046, 2047, 2048, 2047, 2049, 2048, 2048, 2049, 2050, 2049, 2051, 2050, + 2050, 2051, 2052, 2051, 2053, 2052, 2052, 2053, 2054, 2053, 2055, 2054, + 2054, 2055, 2056, 2055, 2057, 2056, 2056, 2057, 2058, 2057, 2059, 2058, + 2058, 2059, 2060, 2059, 2061, 2060, 2060, 2061, 2062, 2061, 2063, 2062, + 2062, 2063, 2064, 2063, 2065, 2064, 2064, 2065, 2066, 2065, 2067, 2066, + 2066, 2067, 2068, 2067, 2069, 2068, 2068, 2069, 2070, 2069, 2071, 2070, + 2070, 2071, 2072, 2071, 2073, 2072, 2072, 2073, 2074, 2073, 2075, 2074, + 2074, 2075, 2076, 2075, 2077, 2076, 2076, 2077, 2078, 2077, 2079, 2078, + 2078, 2079, 2080, 2079, 2081, 2080, 2080, 2081, 2082, 2081, 2083, 2082, + 2082, 2083, 2084, 2083, 2085, 2084, 2084, 2085, 2086, 2085, 2087, 2086, + 2086, 2087, 2088, 2087, 2089, 2088, 2088, 2089, 2090, 2089, 2091, 2090, + 2090, 2091, 2092, 2091, 2093, 2092, 2092, 2093, 2094, 2093, 2095, 2094, + 2094, 2095, 2096, 2095, 2097, 2096, 2096, 2097, 2098, 2097, 2099, 2098, + 2098, 2099, 2100, 2099, 2101, 2100, 2100, 2101, 2102, 2101, 2103, 2102, + 2102, 2103, 2104, 2103, 2105, 2104, 2104, 2105, 2106, 2105, 1999, 2106, + 2106, 1999, 2107, 1999, 1997, 2107, 2107, 1997, 2108, 1997, 2109, 2108, + 2108, 2109, 2110, 2109, 2111, 2110, 2110, 2111, 2112, 2111, 2113, 2112, + 2112, 2113, 2114, 2113, 2115, 2114, 2114, 2115, 2116, 2115, 2117, 2116, + 2116, 2117, 2022, 2117, 2023, 2022, 2022, 2022, 2024, 2022, 2024, 2024, + 2024, 2024, 2026, 2024, 2026, 2026, 2026, 2026, 2028, 2026, 2028, 2028, + 2028, 2028, 2030, 2028, 2030, 2030, 2030, 2030, 2032, 2030, 2032, 2032, + 2032, 2032, 2034, 2032, 2034, 2034, 2034, 2034, 2036, 2034, 2036, 2036, + 2036, 2036, 2038, 2036, 2038, 2038, 2038, 2038, 2040, 2038, 2040, 2040, + 2040, 2040, 2042, 2040, 2042, 2042, 2042, 2042, 2044, 2042, 2044, 2044, + 2044, 2044, 2046, 2044, 2046, 2046, 2046, 2046, 2048, 2046, 2048, 2048, + 2048, 2048, 2050, 2048, 2050, 2050, 2050, 2050, 2052, 2050, 2052, 2052, + 2052, 2052, 2054, 2052, 2054, 2054, 2054, 2054, 2056, 2054, 2056, 2056, + 2056, 2056, 2058, 2056, 2058, 2058, 2058, 2058, 2060, 2058, 2060, 2060, + 2060, 2060, 2062, 2060, 2062, 2062, 2062, 2062, 2064, 2062, 2064, 2064, + 2064, 2064, 2066, 2064, 2066, 2066, 2066, 2066, 2068, 2066, 2068, 2068, + 2068, 2068, 2070, 2068, 2070, 2070, 2070, 2070, 2072, 2070, 2072, 2072, + 2072, 2072, 2074, 2072, 2074, 2074, 2074, 2074, 2076, 2074, 2076, 2076, + 2076, 2076, 2078, 2076, 2078, 2078, 2078, 2078, 2080, 2078, 2080, 2080, + 2080, 2080, 2082, 2080, 2082, 2082, 2082, 2082, 2084, 2082, 2084, 2084, + 2084, 2084, 2086, 2084, 2086, 2086, 2086, 2086, 2088, 2086, 2088, 2088, + 2088, 2088, 2090, 2088, 2090, 2090, 2090, 2090, 2092, 2090, 2092, 2092, + 2092, 2092, 2094, 2092, 2094, 2094, 2094, 2094, 2096, 2094, 2096, 2096, + 2096, 2096, 2098, 2096, 2098, 2098, 2098, 2098, 2100, 2098, 2100, 2100, + 2100, 2100, 2102, 2100, 2102, 2102, 2102, 2102, 2104, 2102, 2104, 2104, + 2104, 2104, 2106, 2104, 2106, 2106, 2106, 2106, 2107, 2106, 2107, 2107, + 2107, 2107, 2108, 2107, 2108, 2108, 2108, 2108, 2110, 2108, 2110, 2110, + 2110, 2110, 2112, 2110, 2112, 2112, 2112, 2112, 2114, 2112, 2114, 2114, + 2114, 2114, 2116, 2114, 2116, 2116, 2116, 2116, 2022, 2116, 2022, 2022, + 2118, 2119, 2120, 2119, 2121, 2120, 2120, 2121, 311, 2121, 2122, 311, + 311, 2122, 317, 2122, 2123, 317, 317, 2123, 2118, 2123, 2119, 2118, + 2118, 2118, 2120, 2118, 2120, 2120, 2120, 2120, 311, 2120, 311, 311, + 311, 311, 317, 311, 317, 317, 317, 317, 2118, 317, 2118, 2118, + 2122, 2121, 2119, 2123, 2122, 2119, 2118, 2124, 2125, 2124, 2126, 2125, + 2125, 2126, 2127, 2126, 2128, 2127, 2127, 2128, 2120, 2128, 2129, 2120, + 2120, 2129, 2118, 2129, 2124, 2118, 2118, 2118, 2125, 2118, 2125, 2125, + 2125, 2125, 2127, 2125, 2127, 2127, 2127, 2127, 2120, 2127, 2120, 2120, + 2120, 2120, 2118, 2120, 2118, 2118, 984, 891, 982, 891, 983, 982, + 982, 983, 2130, 983, 2131, 2130, 2130, 2131, 882, 2131, 883, 882, + 882, 883, 880, 883, 881, 880, 880, 881, 878, 881, 879, 878, + 878, 879, 876, 879, 877, 876, 876, 877, 874, 877, 875, 874, + 874, 875, 2132, 875, 893, 2132, 2132, 893, 984, 893, 891, 984, + 984, 984, 982, 984, 982, 982, 982, 982, 2130, 982, 2130, 2130, + 2130, 2130, 882, 2130, 882, 882, 882, 882, 880, 882, 880, 880, + 880, 880, 878, 880, 878, 878, 878, 878, 876, 878, 876, 876, + 876, 876, 874, 876, 874, 874, 874, 874, 2132, 874, 2132, 2132, + 2132, 2132, 984, 2132, 984, 984, 2133, 2134, 2135, 2134, 524, 2135, + 2135, 524, 2136, 524, 548, 2136, 2136, 548, 2137, 548, 2138, 2137, + 2137, 2138, 517, 2138, 518, 517, 517, 518, 515, 518, 516, 515, + 515, 516, 2133, 516, 2134, 2133, 2133, 2133, 2135, 2133, 2135, 2135, + 2135, 2135, 2136, 2135, 2136, 2136, 2136, 2136, 2137, 2136, 2137, 2137, + 2137, 2137, 517, 2137, 517, 517, 517, 517, 515, 517, 515, 515, + 515, 515, 2133, 515, 2133, 2133, 543, 544, 2139, 544, 2140, 2139, + 2139, 2140, 2141, 2140, 646, 2141, 2141, 646, 2142, 646, 644, 2142, + 2142, 644, 2143, 644, 2144, 2143, 2143, 2144, 2145, 2144, 2138, 2145, + 2145, 2138, 547, 2138, 548, 547, 547, 548, 545, 548, 546, 545, + 545, 546, 543, 546, 544, 543, 543, 543, 2139, 543, 2139, 2139, + 2139, 2139, 2141, 2139, 2141, 2141, 2141, 2141, 2142, 2141, 2142, 2142, + 2142, 2142, 2143, 2142, 2143, 2143, 2143, 2143, 2145, 2143, 2145, 2145, + 2145, 2145, 547, 2145, 547, 547, 547, 547, 545, 547, 545, 545, + 545, 545, 543, 545, 543, 543, 1986, 1987, 1984, 1987, 1985, 1984, + 1984, 1985, 2146, 1985, 2147, 2146, 2146, 2147, 2148, 2147, 2144, 2148, + 2148, 2144, 643, 2144, 644, 643, 643, 644, 641, 644, 642, 641, + 641, 642, 1986, 642, 1987, 1986, 1986, 1986, 1984, 1986, 1984, 1984, + 1984, 1984, 2146, 1984, 2146, 2146, 2146, 2146, 2148, 2146, 2148, 2148, + 2148, 2148, 643, 2148, 643, 643, 643, 643, 641, 643, 641, 641, + 641, 641, 1986, 641, 1986, 1986, 2143, 2144, 2149, 2144, 2147, 2149, + 2149, 2147, 2150, 2147, 1985, 2150, 2150, 1985, 615, 1985, 616, 615, + 615, 616, 621, 616, 520, 621, 621, 520, 2151, 520, 518, 2151, + 2151, 518, 2145, 518, 2138, 2145, 2145, 2138, 2143, 2138, 2144, 2143, + 2143, 2143, 2149, 2143, 2149, 2149, 2149, 2149, 2150, 2149, 2150, 2150, + 2150, 2150, 615, 2150, 615, 615, 615, 615, 621, 615, 621, 621, + 621, 621, 2151, 621, 2151, 2151, 2151, 2151, 2145, 2151, 2145, 2145, + 2145, 2145, 2143, 2145, 2143, 2143, 2152, 538, 2153, 538, 634, 2153, + 2153, 634, 2154, 634, 2155, 2154, 2154, 2155, 2156, 2155, 650, 2156, + 2156, 650, 2157, 650, 540, 2157, 2157, 540, 2158, 540, 2159, 2158, + 2158, 2159, 2152, 2159, 538, 2152, 2160, 2152, 2161, 2152, 2153, 2161, + 2161, 2153, 2162, 2153, 2154, 2162, 2162, 2154, 2163, 2154, 2156, 2163, + 2163, 2156, 2157, 2156, 2157, 2157, 2157, 2157, 2164, 2157, 2158, 2164, + 2164, 2158, 2160, 2158, 2152, 2160, 2165, 2166, 2167, 2166, 2168, 2167, + 2167, 2168, 2169, 2168, 2170, 2169, 2169, 2170, 2171, 2170, 1602, 2171, + 2171, 1602, 2172, 1602, 1629, 2172, 2172, 1629, 2173, 1629, 2174, 2173, + 2173, 2174, 2175, 2174, 2176, 2175, 2175, 2176, 2177, 2176, 1556, 2177, + 2177, 1556, 2178, 1556, 1554, 2178, 2178, 1554, 2179, 1554, 1582, 2179, + 2179, 1582, 2165, 1582, 2166, 2165, 2165, 2165, 2167, 2165, 2167, 2167, + 2167, 2167, 2169, 2167, 2169, 2169, 2169, 2169, 2171, 2169, 2171, 2171, + 2171, 2171, 2172, 2171, 2172, 2172, 2172, 2172, 2173, 2172, 2173, 2173, + 2173, 2173, 2175, 2173, 2175, 2175, 2175, 2175, 2177, 2175, 2177, 2177, + 2177, 2177, 2178, 2177, 2178, 2178, 2178, 2178, 2179, 2178, 2179, 2179, + 2179, 2179, 2165, 2179, 2165, 2165, 1561, 1540, 2180, 1540, 1538, 2180, + 2180, 1538, 2181, 1538, 1610, 2181, 2181, 1610, 2182, 1610, 1608, 2182, + 2182, 1608, 2183, 1608, 1606, 2183, 2183, 1606, 2184, 1606, 1604, 2184, + 2184, 1604, 2185, 1604, 1602, 2185, 2185, 1602, 2186, 1602, 2170, 2186, + 2186, 2170, 2187, 2170, 2168, 2187, 2187, 2168, 2188, 2168, 2166, 2188, + 2188, 2166, 1581, 2166, 1582, 1581, 1581, 1582, 1579, 1582, 1580, 1579, + 1579, 1580, 1566, 1580, 1567, 1566, 1566, 1567, 1564, 1567, 1565, 1564, + 1564, 1565, 1562, 1565, 1563, 1562, 1562, 1563, 1561, 1563, 1540, 1561, + 1561, 1561, 2180, 1561, 2180, 2180, 2180, 2180, 2181, 2180, 2181, 2181, + 2181, 2181, 2182, 2181, 2182, 2182, 2182, 2182, 2183, 2182, 2183, 2183, + 2183, 2183, 2184, 2183, 2184, 2184, 2184, 2184, 2185, 2184, 2185, 2185, + 2185, 2185, 2186, 2185, 2186, 2186, 2186, 2186, 2187, 2186, 2187, 2187, + 2187, 2187, 2188, 2187, 2188, 2188, 2188, 2188, 1581, 2188, 1581, 1581, + 1581, 1581, 1579, 1581, 1579, 1579, 1579, 1579, 1566, 1579, 1566, 1566, + 1566, 1566, 1564, 1566, 1564, 1564, 1564, 1564, 1562, 1564, 1562, 1562, + 1562, 1562, 1561, 1562, 1561, 1561, 2189, 1318, 2190, 1318, 1300, 2190, + 2190, 1300, 2191, 1300, 1298, 2191, 2191, 1298, 2192, 1298, 2193, 2192, + 2192, 2193, 2194, 2193, 1320, 2194, 2194, 1320, 2189, 1320, 1318, 2189, + 2189, 2189, 2190, 2189, 2190, 2190, 2190, 2190, 2191, 2190, 2191, 2191, + 2191, 2191, 2192, 2191, 2192, 2192, 2192, 2192, 2194, 2192, 2194, 2194, + 2194, 2194, 2189, 2194, 2189, 2189, 2205, 2198, 2206, 2198, 2196, 2206, + 2206, 2196, 2207, 2196, 2204, 2207, 2207, 2204, 2208, 2204, 2209, 2208, + 2208, 2209, 2210, 2209, 2211, 2210, 2210, 2211, 2212, 2211, 2213, 2212, + 2212, 2213, 2214, 2213, 2215, 2214, 2214, 2215, 2216, 2215, 2217, 2216, + 2216, 2217, 2218, 2217, 2219, 2218, 2218, 2219, 2220, 2219, 2221, 2220, + 2220, 2221, 2222, 2221, 2223, 2222, 2222, 2223, 2224, 2223, 2225, 2224, + 2224, 2225, 2226, 2225, 2227, 2226, 2226, 2227, 2228, 2227, 2229, 2228, + 2228, 2229, 2230, 2229, 2231, 2230, 2230, 2231, 2232, 2231, 2233, 2232, + 2232, 2233, 2234, 2233, 2235, 2234, 2234, 2235, 2236, 2235, 2237, 2236, + 2236, 2237, 2205, 2237, 2198, 2205, 2205, 2205, 2206, 2205, 2206, 2206, + 2206, 2206, 2207, 2206, 2207, 2207, 2207, 2207, 2208, 2207, 2208, 2208, + 2208, 2208, 2210, 2208, 2210, 2210, 2210, 2210, 2212, 2210, 2212, 2212, + 2212, 2212, 2214, 2212, 2214, 2214, 2214, 2214, 2216, 2214, 2216, 2216, + 2216, 2216, 2218, 2216, 2218, 2218, 2218, 2218, 2220, 2218, 2220, 2220, + 2220, 2220, 2222, 2220, 2222, 2222, 2222, 2222, 2224, 2222, 2224, 2224, + 2224, 2224, 2226, 2224, 2226, 2226, 2226, 2226, 2228, 2226, 2228, 2228, + 2228, 2228, 2230, 2228, 2230, 2230, 2230, 2230, 2232, 2230, 2232, 2232, + 2232, 2232, 2234, 2232, 2234, 2234, 2234, 2234, 2236, 2234, 2236, 2236, + 2236, 2236, 2205, 2236, 2205, 2205, 2238, 2239, 2240, 2239, 2241, 2240, + 2240, 2241, 2242, 2241, 2243, 2242, 2242, 2243, 2244, 2243, 2245, 2244, + 2244, 2245, 2246, 2245, 2247, 2246, 2246, 2247, 2248, 2247, 2249, 2248, + 2248, 2249, 2250, 2249, 2251, 2250, 2250, 2251, 2252, 2251, 2253, 2252, + 2252, 2253, 2254, 2253, 2255, 2254, 2254, 2255, 2256, 2255, 2257, 2256, + 2256, 2257, 2238, 2257, 2239, 2238, 2238, 2238, 2240, 2238, 2240, 2240, + 2240, 2240, 2242, 2240, 2242, 2242, 2242, 2242, 2244, 2242, 2244, 2244, + 2244, 2244, 2246, 2244, 2246, 2246, 2246, 2246, 2248, 2246, 2248, 2248, + 2248, 2248, 2250, 2248, 2250, 2250, 2250, 2250, 2252, 2250, 2252, 2252, + 2252, 2252, 2254, 2252, 2254, 2254, 2254, 2254, 2256, 2254, 2256, 2256, + 2256, 2256, 2238, 2256, 2238, 2238, 2258, 2247, 2259, 2247, 2245, 2259, + 2259, 2245, 2260, 2245, 2261, 2260, 2260, 2261, 2262, 2261, 2263, 2262, + 2262, 2263, 2264, 2263, 2265, 2264, 2264, 2265, 2258, 2265, 2247, 2258, + 2258, 2258, 2259, 2258, 2259, 2259, 2259, 2259, 2260, 2259, 2260, 2260, + 2260, 2260, 2262, 2260, 2262, 2262, 2262, 2262, 2264, 2262, 2264, 2264, + 2264, 2264, 2258, 2264, 2258, 2258, 2266, 2241, 2267, 2241, 2239, 2267, + 2267, 2239, 2268, 2239, 2257, 2268, 2268, 2257, 2269, 2257, 2270, 2269, + 2269, 2270, 2271, 2270, 2272, 2271, 2271, 2272, 2273, 2272, 2274, 2273, + 2273, 2274, 2275, 2274, 2276, 2275, 2275, 2276, 2277, 2276, 2278, 2277, + 2277, 2278, 2279, 2278, 2280, 2279, 2279, 2280, 2281, 2280, 2282, 2281, + 2281, 2282, 2266, 2282, 2241, 2266, 2266, 2266, 2267, 2266, 2267, 2267, + 2267, 2267, 2268, 2267, 2268, 2268, 2268, 2268, 2269, 2268, 2269, 2269, + 2269, 2269, 2271, 2269, 2271, 2271, 2271, 2271, 2273, 2271, 2273, 2273, + 2273, 2273, 2275, 2273, 2275, 2275, 2275, 2275, 2277, 2275, 2277, 2277, + 2277, 2277, 2279, 2277, 2279, 2279, 2279, 2279, 2281, 2279, 2281, 2281, + 2281, 2281, 2266, 2281, 2266, 2266, 2283, 2284, 2285, 2284, 2286, 2285, + 2285, 2286, 2287, 2286, 2288, 2287, 2287, 2288, 2289, 2288, 2290, 2289, + 2289, 2290, 2291, 2290, 2292, 2291, 2291, 2292, 2293, 2292, 2294, 2293, + 2293, 2294, 2295, 2294, 2296, 2295, 2295, 2296, 2297, 2296, 2298, 2297, + 2297, 2298, 2299, 2298, 2300, 2299, 2299, 2300, 2301, 2300, 2302, 2301, + 2301, 2302, 2303, 2302, 2304, 2303, 2303, 2304, 2305, 2304, 2306, 2305, + 2305, 2306, 2307, 2306, 2308, 2307, 2307, 2308, 2283, 2308, 2284, 2283, + 2283, 2283, 2285, 2283, 2285, 2285, 2285, 2285, 2287, 2285, 2287, 2287, + 2287, 2287, 2289, 2287, 2289, 2289, 2289, 2289, 2291, 2289, 2291, 2291, + 2291, 2291, 2293, 2291, 2293, 2293, 2293, 2293, 2295, 2293, 2295, 2295, + 2295, 2295, 2297, 2295, 2297, 2297, 2297, 2297, 2299, 2297, 2299, 2299, + 2299, 2299, 2301, 2299, 2301, 2301, 2301, 2301, 2303, 2301, 2303, 2303, + 2303, 2303, 2305, 2303, 2305, 2305, 2305, 2305, 2307, 2305, 2307, 2307, + 2307, 2307, 2283, 2307, 2283, 2283, 2309, 2310, 2311, 2310, 2312, 2311, + 2311, 2312, 2313, 2312, 2314, 2313, 2313, 2314, 2315, 2314, 2316, 2315, + 2315, 2316, 2317, 2316, 2318, 2317, 2317, 2318, 2319, 2318, 2290, 2319, + 2319, 2290, 2320, 2290, 2288, 2320, 2320, 2288, 2321, 2288, 2286, 2321, + 2321, 2286, 2322, 2286, 2323, 2322, 2322, 2323, 2324, 2323, 2325, 2324, + 2324, 2325, 2326, 2325, 2327, 2326, 2326, 2327, 2328, 2327, 2329, 2328, + 2328, 2329, 2330, 2329, 2331, 2330, 2330, 2331, 2332, 2331, 2333, 2332, + 2332, 2333, 2309, 2333, 2310, 2309, 2309, 2309, 2311, 2309, 2311, 2311, + 2311, 2311, 2313, 2311, 2313, 2313, 2313, 2313, 2315, 2313, 2315, 2315, + 2315, 2315, 2317, 2315, 2317, 2317, 2317, 2317, 2319, 2317, 2319, 2319, + 2319, 2319, 2320, 2319, 2320, 2320, 2320, 2320, 2321, 2320, 2321, 2321, + 2321, 2321, 2322, 2321, 2322, 2322, 2322, 2322, 2324, 2322, 2324, 2324, + 2324, 2324, 2326, 2324, 2326, 2326, 2326, 2326, 2328, 2326, 2328, 2328, + 2328, 2328, 2330, 2328, 2330, 2330, 2330, 2330, 2332, 2330, 2332, 2332, + 2332, 2332, 2309, 2332, 2309, 2309, 2334, 2335, 2336, 2335, 2337, 2336, + 2336, 2337, 2338, 2337, 2339, 2338, 2338, 2339, 2340, 2339, 2341, 2340, + 2340, 2341, 2342, 2341, 2343, 2342, 2342, 2343, 2344, 2343, 2345, 2344, + 2344, 2345, 2346, 2345, 2347, 2346, 2346, 2347, 2348, 2347, 2349, 2348, + 2348, 2349, 2350, 2349, 2351, 2350, 2350, 2351, 2352, 2351, 2353, 2352, + 2352, 2353, 2354, 2353, 2355, 2354, 2354, 2355, 2356, 2355, 2357, 2356, + 2356, 2357, 2358, 2357, 2359, 2358, 2358, 2359, 2360, 2359, 2361, 2360, + 2360, 2361, 2362, 2361, 2363, 2362, 2362, 2363, 2364, 2363, 2365, 2364, + 2364, 2365, 2366, 2365, 2367, 2366, 2366, 2367, 2368, 2367, 2369, 2368, + 2368, 2369, 2334, 2369, 2335, 2334, 2334, 2334, 2336, 2334, 2336, 2336, + 2336, 2336, 2338, 2336, 2338, 2338, 2338, 2338, 2340, 2338, 2340, 2340, + 2340, 2340, 2342, 2340, 2342, 2342, 2342, 2342, 2344, 2342, 2344, 2344, + 2344, 2344, 2346, 2344, 2346, 2346, 2346, 2346, 2348, 2346, 2348, 2348, + 2348, 2348, 2350, 2348, 2350, 2350, 2350, 2350, 2352, 2350, 2352, 2352, + 2352, 2352, 2354, 2352, 2354, 2354, 2354, 2354, 2356, 2354, 2356, 2356, + 2356, 2356, 2358, 2356, 2358, 2358, 2358, 2358, 2360, 2358, 2360, 2360, + 2360, 2360, 2362, 2360, 2362, 2362, 2362, 2362, 2364, 2362, 2364, 2364, + 2364, 2364, 2366, 2364, 2366, 2366, 2366, 2366, 2368, 2366, 2368, 2368, + 2368, 2368, 2334, 2368, 2334, 2334, 2338, 2339, 2336, 2339, 2337, 2336, + 2336, 2337, 2370, 2337, 2371, 2370, 2370, 2371, 2372, 2371, 2373, 2372, + 2372, 2373, 2374, 2373, 2375, 2374, 2374, 2375, 2376, 2375, 2377, 2376, + 2376, 2377, 2378, 2377, 2379, 2378, 2378, 2379, 2380, 2379, 2381, 2380, + 2380, 2381, 2382, 2381, 2383, 2382, 2382, 2383, 2384, 2383, 2385, 2384, + 2384, 2385, 2386, 2385, 2387, 2386, 2386, 2387, 2338, 2387, 2339, 2338, + 2338, 2338, 2336, 2338, 2336, 2336, 2336, 2336, 2370, 2336, 2370, 2370, + 2370, 2370, 2372, 2370, 2372, 2372, 2372, 2372, 2374, 2372, 2374, 2374, + 2374, 2374, 2376, 2374, 2376, 2376, 2376, 2376, 2378, 2376, 2378, 2378, + 2378, 2378, 2380, 2378, 2380, 2380, 2380, 2380, 2382, 2380, 2382, 2382, + 2382, 2382, 2384, 2382, 2384, 2384, 2384, 2384, 2386, 2384, 2386, 2386, + 2386, 2386, 2338, 2386, 2338, 2338 + ] + }, + { + "id": "shape1_part2", + "type": "TRIANGLES", + "indices": [ + 40, 42, 44, 70, 72, 74, 76, 70, 74, 80, 82, 84, + 38, 32, 34, 38, 34, 36, 44, 46, 48, 40, 44, 48, + 28, 32, 38, 54, 56, 58, 54, 50, 52, 54, 48, 50, + 48, 54, 58, 60, 48, 58, 48, 60, 66, 62, 66, 60, + 66, 40, 48, 62, 64, 66, 30, 32, 28, 88, 90, 0, + 40, 26, 28, 4, 6, 8, 40, 70, 26, 40, 28, 38, + 24, 26, 76, 66, 68, 70, 66, 70, 40, 4, 10, 16, + 10, 4, 8, 14, 10, 12, 14, 16, 10, 24, 78, 22, + 70, 76, 26, 80, 86, 78, 86, 80, 84, 20, 86, 88, + 2, 20, 88, 2, 88, 0, 20, 78, 86, 78, 24, 76, + 20, 22, 78, 20, 16, 18, 2, 16, 20, 4, 16, 2, + 104, 100, 102, 98, 100, 104, 106, 96, 98, 106, 98, 104, + 106, 108, 92, 96, 106, 92, 96, 92, 94, 116, 118, 120, + 112, 114, 116, 110, 112, 116, 110, 116, 120, 148, 152, 146, + 152, 156, 158, 146, 142, 144, 150, 152, 148, 146, 158, 142, + 146, 152, 158, 154, 156, 152, 194, 190, 192, 208, 194, 196, + 208, 196, 198, 207, 198, 160, 208, 198, 207, 194, 188, 190, + 200, 194, 208, 200, 188, 194, 164, 206, 160, 164, 160, 162, + 206, 164, 166, 207, 160, 206, 200, 184, 188, 184, 186, 188, + 200, 201, 184, 184, 201, 202, 182, 184, 202, 174, 203, 204, + 176, 202, 203, 176, 203, 174, 178, 202, 176, 180, 182, 202, + 178, 180, 202, 172, 174, 204, 166, 205, 206, 170, 166, 168, + 170, 205, 166, 204, 205, 170, 172, 204, 170, 229, 209, 211, + 215, 229, 211, 215, 211, 213, 223, 219, 221, 217, 219, 223, + 225, 217, 223, 215, 217, 225, 227, 229, 215, 225, 227, 215, + 231, 32, 30, 251, 253, 255, 30, 28, 26, 233, 30, 26, + 235, 30, 233, 245, 247, 251, 249, 251, 247, 255, 245, 251, + 235, 243, 245, 255, 231, 30, 255, 235, 245, 235, 255, 30, + 235, 241, 243, 237, 239, 235, 239, 241, 235, 263, 257, 259, + 263, 259, 261, 265, 271, 257, 263, 265, 257, 267, 271, 265, + 269, 271, 267, 275, 277, 279, 273, 275, 279, 281, 283, 285, + 289, 281, 285, 289, 285, 287, 299, 303, 293, 291, 293, 303, + 293, 295, 299, 301, 303, 299, 297, 299, 295, 305, 307, 309, + 310, 305, 309, 311, 315, 317, 313, 315, 311, 347, 349, 351, + 365, 351, 353, 367, 347, 351, 363, 365, 353, 363, 353, 355, + 359, 355, 357, 361, 355, 359, 363, 355, 361, 365, 367, 351, + 345, 347, 367, 381, 383, 385, 387, 370, 385, 381, 385, 370, + 369, 370, 387, 371, 381, 370, 372, 379, 381, 371, 372, 381, + 373, 379, 372, 374, 377, 379, 373, 374, 379, 375, 377, 374, + 389, 395, 399, 391, 393, 389, 393, 395, 389, 397, 399, 395, + 409, 411, 413, 405, 409, 413, 405, 413, 415, 405, 415, 401, + 403, 405, 401, 407, 409, 405, 427, 429, 431, 423, 427, 431, + 425, 427, 423, 423, 431, 433, 421, 423, 433, 421, 433, 417, + 419, 421, 417, 436, 438, 440, 442, 436, 440, 435, 436, 442, + 450, 435, 442, 450, 442, 444, 449, 450, 444, 449, 444, 446, + 448, 449, 446, 472, 474, 475, 468, 470, 472, 477, 472, 475, + 477, 475, 476, 466, 468, 472, 466, 472, 477, 464, 466, 477, + 464, 477, 478, 480, 478, 479, 452, 480, 451, 452, 478, 480, + 462, 464, 478, 478, 454, 462, 452, 454, 478, 460, 462, 454, + 458, 460, 454, 456, 458, 454, 295, 481, 483, 293, 481, 295, + 487, 303, 301, 301, 299, 297, 485, 487, 301, 485, 301, 297, + 495, 491, 493, 489, 491, 495, 493, 499, 501, 497, 499, 493, + 495, 493, 501, 497, 503, 499, 507, 503, 497, 505, 507, 497, + 513, 515, 517, 521, 513, 517, 521, 517, 519, 511, 513, 521, + 511, 521, 509, 545, 523, 525, 545, 525, 527, 547, 523, 545, + 543, 545, 527, 527, 529, 531, 535, 531, 533, 531, 543, 527, + 535, 543, 531, 535, 541, 543, 539, 541, 535, 539, 535, 537, + 555, 114, 112, 557, 112, 110, 559, 555, 112, 559, 112, 557, + 553, 555, 559, 559, 551, 553, 561, 551, 559, 561, 549, 551, + 563, 549, 561, 571, 573, 549, 563, 571, 549, 565, 571, 563, + 569, 571, 565, 567, 569, 565, 583, 579, 581, 589, 579, 583, + 587, 589, 583, 587, 583, 585, 591, 579, 589, 595, 597, 599, + 601, 595, 599, 575, 591, 606, 579, 575, 577, 591, 575, 579, + 606, 591, 593, 606, 593, 595, 605, 606, 595, 605, 595, 601, + 605, 601, 603, 611, 579, 607, 611, 607, 609, 581, 579, 611, + 613, 581, 611, 620, 621, 615, 619, 620, 615, 617, 619, 615, + 622, 624, 605, 622, 605, 603, 627, 629, 631, 625, 627, 631, + 635, 624, 622, 636, 624, 635, 639, 633, 635, 622, 637, 639, + 639, 635, 622, 648, 643, 645, 648, 645, 647, 643, 648, 649, + 655, 643, 649, 655, 649, 651, 641, 643, 655, 653, 655, 651, + 674, 668, 670, 672, 674, 670, 676, 674, 672, 120, 676, 672, + 118, 676, 120, 684, 668, 678, 684, 678, 680, 682, 684, 680, + 686, 668, 684, 670, 668, 686, 694, 696, 698, 704, 692, 702, + 690, 704, 688, 690, 692, 704, 694, 700, 702, 694, 698, 700, + 702, 692, 694, 720, 721, 694, 720, 694, 692, 719, 720, 692, + 712, 719, 692, 708, 712, 692, 706, 708, 692, 710, 712, 708, + 716, 719, 712, 714, 716, 712, 718, 719, 716, 732, 734, 736, + 728, 730, 732, 742, 724, 736, 732, 736, 724, 728, 732, 724, + 736, 738, 740, 740, 742, 736, 726, 728, 724, 754, 748, 750, + 754, 750, 752, 722, 724, 754, 742, 744, 746, 742, 748, 724, + 746, 748, 742, 754, 724, 748, 722, 754, 756, 764, 766, 768, + 758, 760, 762, 764, 768, 770, 772, 758, 762, 774, 758, 772, + 770, 772, 762, 770, 762, 764, 768, 778, 780, 768, 780, 782, + 770, 768, 782, 782, 784, 776, 770, 782, 776, 780, 786, 788, + 784, 780, 788, 782, 780, 784, 790, 784, 788, 796, 776, 792, + 790, 792, 784, 776, 784, 792, 794, 796, 792, 830, 832, 834, + 838, 834, 836, 840, 842, 844, 820, 824, 826, 822, 824, 820, + 818, 820, 826, 816, 818, 826, 840, 814, 816, 814, 844, 812, + 826, 828, 830, 838, 826, 830, 838, 830, 834, 826, 838, 840, + 826, 840, 816, 810, 812, 848, 840, 844, 814, 846, 812, 844, + 848, 812, 846, 726, 724, 722, 726, 848, 728, 790, 786, 726, + 726, 780, 848, 780, 810, 848, 722, 790, 726, 788, 786, 790, + 810, 778, 808, 780, 726, 786, 780, 778, 810, 806, 808, 778, + 766, 802, 806, 804, 806, 802, 850, 790, 722, 802, 760, 800, + 806, 778, 766, 766, 778, 768, 792, 790, 850, 766, 760, 802, + 760, 766, 764, 762, 760, 764, 798, 800, 760, 758, 798, 760, + 868, 870, 852, 864, 866, 868, 864, 868, 856, 854, 868, 852, + 856, 868, 854, 862, 864, 856, 856, 858, 860, 862, 856, 860, + 882, 884, 886, 880, 882, 886, 888, 864, 862, 888, 880, 886, + 862, 880, 888, 862, 876, 880, 878, 880, 876, 872, 876, 862, + 874, 876, 872, 894, 896, 898, 892, 898, 890, 894, 898, 892, + 904, 906, 900, 902, 904, 900, 913, 908, 910, 913, 910, 912, + 916, 914, 915, 917, 914, 916, 906, 918, 920, 900, 906, 920, + 908, 924, 926, 910, 908, 926, 922, 924, 908, 936, 928, 930, + 936, 930, 932, 858, 936, 932, 932, 904, 858, 904, 932, 934, + 860, 904, 902, 860, 858, 904, 946, 948, 950, 952, 946, 950, + 960, 954, 956, 960, 956, 958, 940, 942, 944, 940, 944, 946, + 918, 938, 940, 920, 918, 940, 966, 920, 940, 940, 946, 952, + 940, 952, 954, 964, 966, 962, 940, 960, 966, 954, 960, 940, + 962, 966, 960, 972, 974, 968, 972, 968, 928, 970, 972, 928, + 970, 928, 936, 389, 974, 972, 391, 389, 972, 391, 972, 970, + 976, 391, 970, 978, 391, 976, 870, 976, 970, 870, 970, 852, + 866, 976, 870, 866, 870, 868, 988, 399, 397, 986, 988, 397, + 980, 985, 986, 397, 980, 986, 984, 980, 982, 985, 980, 984, + 993, 997, 999, 993, 999, 990, 995, 997, 993, 991, 993, 990, + 930, 968, 997, 930, 997, 995, 930, 995, 1000, 928, 968, 930, + 1006, 1030, 1002, 1004, 1006, 1002, 1006, 1028, 1030, 1024, 1028, 1006, + 1026, 1028, 1024, 1022, 1024, 1006, 1020, 1022, 1006, 1020, 1006, 1008, + 1010, 1020, 1008, 1018, 1020, 1010, 1018, 1014, 1016, 1010, 1012, 1018, + 1012, 1014, 1018, 1034, 1036, 1037, 1032, 1034, 1037, 1037, 1038, 1040, + 1032, 1037, 1040, 1046, 1042, 1044, 607, 1042, 1046, 609, 607, 1046, + 609, 1046, 1048, 1055, 1059, 1051, 1055, 1051, 1053, 1049, 1051, 1059, + 1057, 1059, 1055, 1004, 1002, 1061, 1004, 1061, 1049, 1059, 1004, 1049, + 1008, 1059, 1057, 1006, 1004, 1059, 1008, 1006, 1059, 1077, 1081, 1083, + 1079, 1081, 1077, 1067, 1077, 1083, 1063, 1067, 1083, 1071, 1077, 1067, + 1069, 1071, 1067, 1073, 1077, 1071, 1075, 1077, 1073, 1065, 1067, 1063, + 1083, 1081, 1085, 1083, 1085, 1087, 1089, 1085, 1081, 1095, 1097, 1099, + 1042, 1091, 1093, 1042, 1093, 1095, 1109, 1095, 1099, 1109, 1099, 1101, + 1042, 1095, 1109, 1044, 1042, 1109, 1087, 1101, 1103, 1105, 1109, 1101, + 1105, 1101, 1087, 1085, 1105, 1087, 1107, 1109, 1105, 1119, 1065, 1063, + 1119, 1063, 1111, 1113, 1119, 1111, 1117, 1119, 1113, 1115, 1117, 1113, + 1125, 1075, 1073, 1123, 1075, 1125, 1113, 1127, 1115, 1127, 1129, 1115, + 1113, 1121, 1127, 1123, 1125, 1127, 1121, 1123, 1127, 1055, 1123, 1121, + 1053, 1123, 1055, 1133, 1135, 1137, 1141, 1131, 1137, 1141, 1137, 1139, + 1133, 1137, 1131, 1149, 1151, 1153, 1145, 1147, 1149, 1149, 1153, 1155, + 1145, 1149, 1155, 1143, 1145, 1155, 1141, 1139, 1145, 1141, 1145, 1143, + 1159, 1161, 409, 407, 1159, 409, 1159, 407, 1157, 1133, 1161, 1159, + 1133, 1159, 1135, 1243, 1245, 1247, 1243, 1247, 1249, 1237, 1239, 1241, + 1235, 1237, 1241, 1249, 1251, 1253, 1253, 1243, 1249, 1255, 1243, 1253, + 1241, 1243, 1255, 1227, 1229, 1231, 1233, 1227, 1231, 1221, 1223, 1225, + 1219, 1221, 1225, 1267, 1273, 1279, 1271, 1267, 1269, 1273, 1267, 1271, + 1273, 1275, 1277, 1279, 1273, 1277, 1281, 1267, 1279, 1283, 1267, 1281, + 1213, 1215, 1217, 1211, 1213, 1217, 1285, 1287, 1289, 1207, 1209, 1219, + 1217, 1219, 1209, 1211, 1217, 1209, 1235, 1241, 1255, 1225, 1207, 1219, + 1225, 1227, 1255, 1255, 1207, 1225, 1207, 1283, 1205, 1233, 1235, 1255, + 1255, 1227, 1233, 1257, 1207, 1255, 1257, 1261, 1207, 1259, 1261, 1257, + 1261, 1265, 1207, 1263, 1265, 1261, 1267, 1207, 1265, 1283, 1207, 1267, + 1295, 1289, 1291, 1295, 1291, 1293, 1205, 1289, 1201, 1285, 1205, 1283, + 1289, 1205, 1285, 1199, 1201, 1289, 1203, 1205, 1201, 1289, 1179, 1199, + 1295, 1169, 1289, 1165, 1169, 1295, 1163, 1165, 1295, 1167, 1169, 1165, + 1169, 1171, 1289, 1171, 1177, 1289, 1177, 1171, 1173, 1175, 1177, 1173, + 1177, 1179, 1289, 1185, 1199, 1179, 1185, 1179, 1181, 1183, 1185, 1181, + 1187, 1199, 1185, 1187, 1197, 1199, 1191, 1187, 1189, 1191, 1197, 1187, + 1197, 1191, 1193, 1195, 1197, 1193, 1303, 1305, 1307, 1307, 1309, 1311, + 1313, 1307, 1311, 1315, 1297, 1299, 1301, 1315, 1299, 1303, 1313, 1315, + 1303, 1307, 1313, 1315, 1301, 1303, 1319, 1321, 1323, 1317, 1319, 1323, + 1326, 1327, 1329, 1331, 1326, 1329, 1325, 1326, 1331, 1339, 1335, 1337, + 1339, 1333, 1335, 1340, 1333, 1339, 1341, 1333, 1340, 1343, 1345, 1347, + 1327, 1343, 1347, 1351, 1329, 1327, 1347, 1349, 1351, 1351, 1327, 1347, + 1331, 1329, 1351, 1535, 1537, 1539, 1543, 1539, 1541, 1535, 1539, 1543, + 1533, 1535, 1543, 1533, 1547, 1531, 1543, 1545, 1533, 1545, 1547, 1533, + 1549, 1531, 1547, 1557, 1559, 1551, 1553, 1555, 1557, 1553, 1557, 1551, + 1564, 1566, 1568, 1570, 1564, 1568, 1562, 1564, 1570, 1572, 1561, 1562, + 1572, 1562, 1570, 1581, 1553, 1551, 1573, 1581, 1551, 1577, 1573, 1575, + 1579, 1581, 1573, 1577, 1579, 1573, 1566, 1579, 1577, 1568, 1566, 1577, + 1583, 1585, 1587, 1597, 1583, 1587, 1597, 1587, 1589, 1591, 1595, 1589, + 1597, 1589, 1595, 1593, 1595, 1591, 1559, 1583, 1597, 1551, 1559, 1597, + 1551, 1597, 1595, 1573, 1551, 1595, 1599, 1573, 1595, 1593, 1599, 1595, + 1575, 1573, 1599, 1624, 1626, 1628, 1620, 1624, 1628, 1605, 1601, 1603, + 1601, 1620, 1628, 1620, 1601, 1605, 1622, 1624, 1620, 1618, 1620, 1605, + 1605, 1616, 1618, 1607, 1609, 1605, 1609, 1616, 1605, 1612, 1616, 1609, + 1612, 1609, 1611, 1613, 1616, 1612, 1614, 1616, 1613, 1638, 1636, 1637, + 1634, 1636, 1638, 1630, 1639, 1640, 1639, 1634, 1638, 1632, 1639, 1630, + 1632, 1634, 1639, 1657, 1659, 1641, 1643, 1657, 1641, 1655, 1657, 1643, + 1651, 1645, 1647, 1649, 1651, 1647, 1653, 1645, 1651, 1643, 1645, 1653, + 1655, 1643, 1653, 1653, 1665, 1655, 1667, 1655, 1665, 209, 1667, 1665, + 211, 209, 1665, 1653, 1663, 1665, 1661, 1663, 1653, 221, 1663, 1661, + 219, 1663, 221, 1671, 1677, 1679, 1669, 1671, 1679, 1659, 1669, 1679, + 1641, 1659, 1679, 1671, 1673, 1677, 1675, 1677, 1673, 1649, 1647, 1677, + 1675, 1649, 1677, 1681, 1683, 1685, 1687, 1681, 1685, 1671, 1681, 1687, + 1695, 1689, 1691, 1693, 1695, 1691, 1673, 1689, 1695, 1687, 1689, 1673, + 1671, 1687, 1673, 1723, 1725, 1727, 1721, 1723, 1727, 1711, 1715, 1717, + 1711, 1717, 1719, 1713, 1715, 1711, 1721, 1727, 1729, 1703, 1705, 1707, + 1703, 1707, 1709, 1697, 1699, 1701, 1697, 1701, 1703, 1697, 1703, 1709, + 1697, 1709, 1711, 1729, 1697, 1711, 1719, 1729, 1711, 1729, 1719, 1721, + 1732, 1734, 1731, 1733, 1734, 1732, 1737, 1738, 1735, 1737, 1735, 1736, + 1742, 1743, 1745, 1741, 1739, 1740, 1742, 1745, 1739, 1741, 1742, 1739, + 1767, 1769, 1747, 1749, 1767, 1747, 1683, 1767, 1749, 1685, 1683, 1749, + 1685, 1749, 1751, 1757, 1751, 1753, 1755, 1757, 1753, 1757, 1691, 1685, + 1757, 1685, 1751, 1691, 1757, 1759, 1765, 1761, 1763, 1759, 1761, 1765, + 1693, 1759, 1765, 1691, 1759, 1693, 1769, 1777, 1779, 1775, 1769, 1779, + 1747, 1769, 1775, 1781, 1775, 1779, 1773, 1775, 1781, 1753, 1771, 1773, + 1773, 1791, 1753, 1755, 1753, 1791, 1783, 1773, 1781, 1783, 1791, 1773, + 1793, 1755, 1791, 1785, 1789, 1791, 1785, 1791, 1783, 1787, 1789, 1785, + 1763, 1789, 1787, 1761, 1789, 1763, 1799, 1801, 1795, 1797, 1799, 1795, + 1807, 1809, 1811, 1811, 1803, 1805, 1807, 1811, 1805, 1815, 1817, 1819, + 1813, 1815, 1819, 1813, 1819, 1820, 1795, 1821, 1815, 1795, 1815, 1813, + 1797, 1795, 1813, 227, 1829, 1831, 225, 1823, 227, 1823, 1829, 227, + 1825, 1829, 1823, 1827, 1829, 1825, 1835, 1837, 1699, 1803, 1835, 1699, + 1833, 1835, 1803, 1838, 1803, 1699, 1697, 1838, 1699, 1805, 1803, 1838, + 1852, 1854, 1856, 1846, 1848, 1850, 1858, 1850, 1852, 1858, 1852, 1856, + 1846, 1850, 1858, 1862, 1846, 1858, 1862, 1858, 1860, 1862, 1844, 1846, + 1842, 1862, 1840, 1842, 1844, 1862, 1868, 1870, 1864, 1866, 1868, 1864, + 1874, 1876, 1878, 1872, 1874, 1878, 1884, 1886, 1887, 1880, 1882, 1884, + 1880, 1884, 1887, 1864, 1876, 1874, 1888, 1866, 1864, 1888, 1864, 1874, + 1850, 267, 265, 1850, 1892, 267, 1850, 1890, 1892, 1850, 265, 1852, + 1848, 1890, 1850, 1894, 1842, 1840, 1894, 1840, 1898, 1896, 1842, 1894, + 1872, 1894, 1898, 1898, 1882, 1880, 1878, 1894, 1872, 1872, 1898, 1880, + 1902, 1904, 1906, 1908, 1902, 1906, 1900, 1902, 1908, 1910, 1900, 1908, + 1912, 1914, 1904, 1902, 1912, 1904, 1916, 1912, 1902, 1900, 1916, 1902, + 1918, 1922, 1914, 1920, 1922, 1918, 1914, 1926, 1918, 1912, 1926, 1914, + 1916, 1926, 1912, 1924, 1926, 1916, 1924, 1918, 1926, 1934, 1936, 1938, + 1918, 1932, 1938, 1918, 1938, 1920, 1932, 1918, 1924, 1934, 1938, 1932, + 1930, 1932, 1924, 1928, 1930, 1924, 1940, 1946, 1948, 1950, 1940, 1948, + 1942, 1946, 1940, 1944, 1946, 1942, 1958, 1960, 1934, 1958, 1934, 1932, + 1930, 1952, 1958, 1956, 1958, 1952, 1954, 1956, 1952, 1946, 1928, 1948, + 1932, 1930, 1958, 1928, 1952, 1930, 1944, 1928, 1946, 1928, 1944, 1952, + 283, 1962, 1963, 283, 1963, 1965, 283, 1965, 1967, 285, 283, 1967, + 1973, 1979, 281, 1977, 1979, 1973, 1975, 1977, 1973, 289, 1973, 281, + 1971, 289, 1969, 1971, 1973, 289, 1981, 1640, 1980, 1630, 1640, 1981, + 1531, 1630, 1981, 1531, 1981, 1533, 1632, 1630, 1531, 1982, 1983, 1984, + 1982, 511, 509, 625, 1982, 1984, 625, 1984, 1986, 1982, 631, 511, + 625, 631, 1982, 1990, 1992, 1994, 1988, 491, 489, 1990, 1994, 491, + 1988, 1990, 491, 2008, 2010, 2012, 2008, 2012, 2014, 2004, 2006, 2008, + 2000, 2002, 2004, 2004, 2018, 1996, 2014, 2004, 2008, 2000, 2004, 1996, + 1998, 2000, 1996, 2014, 2016, 2018, 2018, 2004, 2014, 1996, 2018, 2020, + 2104, 2098, 2100, 2102, 2104, 2100, 2094, 2098, 2104, 2096, 2098, 2094, + 2094, 2104, 2106, 2106, 2092, 2094, 2092, 2106, 2107, 2084, 2080, 2082, + 2086, 2078, 2080, 2086, 2072, 2078, 2086, 2080, 2084, 2078, 2074, 2076, + 2088, 2072, 2086, 2072, 2074, 2078, 2108, 2092, 2107, 2058, 2062, 2066, + 2062, 2058, 2060, 2058, 2052, 2056, 2064, 2066, 2062, 2070, 2072, 2088, + 2070, 2088, 2090, 2066, 2048, 2050, 2052, 2054, 2056, 2066, 2052, 2058, + 2066, 2050, 2052, 2108, 2110, 2090, 2108, 2090, 2092, 2042, 2044, 2046, + 2040, 2036, 2038, 2042, 2034, 2036, 2112, 2068, 2070, 2110, 2112, 2070, + 2110, 2070, 2090, 2028, 2032, 2034, 2042, 2036, 2040, 2034, 2042, 2046, + 2026, 2028, 2034, 2030, 2032, 2028, 2046, 2026, 2034, 2026, 2046, 2114, + 2022, 2026, 2114, 2024, 2026, 2022, 2048, 2066, 2068, 2048, 2068, 2112, + 2112, 2046, 2048, 2112, 2114, 2046, 2116, 2022, 2114, 2120, 311, 317, + 2120, 317, 2118, 2125, 2120, 2118, 2127, 2120, 2125, 882, 982, 2130, + 878, 882, 880, 882, 984, 982, 878, 984, 882, 2132, 984, 878, + 874, 878, 876, 2132, 878, 874, 2136, 2133, 2135, 2137, 2133, 2136, + 515, 2133, 2137, 517, 515, 2137, 2145, 547, 545, 2139, 545, 543, + 2145, 545, 2139, 2143, 2141, 2142, 2145, 2139, 2141, 2143, 2145, 2141, + 1986, 2146, 2148, 1984, 2146, 1986, 641, 1986, 2148, 641, 2148, 643, + 621, 2151, 2145, 621, 2145, 2143, 615, 621, 2143, 2149, 615, 2143, + 2150, 615, 2149, 2162, 2164, 2160, 2162, 2160, 2161, 2163, 2157, 2164, + 2163, 2164, 2162, 2167, 2175, 2177, 2178, 2167, 2177, 2165, 2167, 2178, + 2165, 2178, 2179, 2169, 2175, 2167, 2169, 2173, 2175, 2171, 2173, 2169, + 2172, 2173, 2171, 2184, 2185, 2186, 2186, 2187, 2188, 1579, 1564, 2188, + 1579, 2188, 1581, 1564, 1579, 1566, 1562, 2188, 1564, 1562, 2182, 2184, + 2183, 2184, 2182, 2186, 2188, 1562, 1562, 2184, 2186, 2180, 2182, 1562, + 2181, 2182, 2180, 1561, 2180, 1562, 2191, 2192, 2194, 2191, 2194, 2189, + 2190, 2191, 2189, 2224, 2226, 2228, 2208, 2210, 2212, 2214, 2208, 2212, + 2232, 2228, 2230, 2206, 2207, 2208, 2220, 2222, 2232, 2228, 2222, 2224, + 2232, 2222, 2228, 2232, 2218, 2220, 2234, 2218, 2232, 2216, 2218, 2234, + 2214, 2216, 2234, 2234, 2206, 2214, 2214, 2206, 2208, 2206, 2234, 2236, + 2205, 2206, 2236, 2244, 2240, 2242, 2244, 2256, 2238, 2244, 2238, 2240, + 2246, 2256, 2244, 2248, 2256, 2246, 2254, 2256, 2248, 2250, 2254, 2248, + 2252, 2254, 2250, 2262, 2259, 2260, 2258, 2259, 2262, 2264, 2258, 2262, + 2281, 2267, 2279, 2266, 2267, 2281, 2268, 2269, 2271, 2267, 2268, 2271, + 2273, 2277, 2271, 2275, 2277, 2273, 2277, 2267, 2271, 2279, 2267, 2277, + 2287, 2289, 2291, 2307, 2283, 2285, 2307, 2285, 2287, 2305, 2307, 2287, + 2303, 2305, 2287, 2287, 2291, 2293, 2301, 2303, 2287, 2293, 2299, 2301, + 2287, 2293, 2301, 2295, 2299, 2293, 2299, 2295, 2297, 2322, 2324, 2326, + 2317, 2326, 2328, 2317, 2328, 2330, 2322, 2326, 2317, 2319, 2322, 2317, + 2330, 2309, 2317, 2320, 2322, 2319, 2321, 2322, 2320, 2332, 2309, 2330, + 2315, 2317, 2309, 2311, 2315, 2309, 2313, 2315, 2311, 2368, 2334, 2336, + 2364, 2366, 2336, 2342, 2338, 2340, 2342, 2344, 2338, 2344, 2346, 2338, + 2336, 2338, 2364, 2336, 2366, 2368, 2338, 2346, 2364, 2346, 2362, 2364, + 2348, 2362, 2346, 2360, 2362, 2348, 2350, 2358, 2360, 2348, 2350, 2360, + 2352, 2358, 2350, 2356, 2358, 2352, 2354, 2356, 2352, 2372, 2384, 2370, + 2374, 2376, 2372, 2376, 2378, 2372, 2378, 2380, 2372, 2380, 2382, 2372, + 2382, 2384, 2372, 2386, 2370, 2384, 2338, 2370, 2386, 2336, 2370, 2338 + ] + }, + { + "id": "shape1_part3", + "type": "TRIANGLES", + "indices": [ + 122, 123, 124, 123, 125, 124, 124, 125, 126, 125, 127, 126, + 126, 127, 128, 127, 129, 128, 128, 129, 130, 129, 131, 130, + 130, 131, 132, 131, 133, 132, 132, 133, 134, 133, 135, 134, + 134, 135, 136, 135, 137, 136, 136, 137, 138, 137, 139, 138, + 138, 139, 140, 139, 141, 140, 140, 141, 122, 141, 123, 122, + 122, 122, 124, 122, 124, 124, 124, 124, 126, 124, 126, 126, + 126, 126, 128, 126, 128, 128, 128, 128, 130, 128, 130, 130, + 130, 130, 132, 130, 132, 132, 132, 132, 134, 132, 134, 134, + 134, 134, 136, 134, 136, 136, 136, 136, 138, 136, 138, 138, + 138, 138, 140, 138, 140, 140, 140, 140, 122, 140, 122, 122, + 325, 319, 321, 323, 325, 321, 329, 331, 333, 329, 333, 335, + 337, 329, 335, 327, 329, 337, 343, 339, 340, 343, 340, 341, + 657, 658, 659, 658, 514, 659, 659, 514, 660, 514, 512, 660, + 660, 512, 661, 512, 632, 661, 661, 632, 662, 632, 630, 662, + 662, 630, 663, 630, 628, 663, 663, 628, 664, 628, 665, 664, + 664, 665, 666, 665, 667, 666, 666, 667, 657, 667, 658, 657, + 657, 657, 659, 657, 659, 659, 659, 659, 660, 659, 660, 660, + 660, 660, 661, 660, 661, 661, 661, 661, 662, 661, 662, 662, + 662, 662, 663, 662, 663, 663, 663, 663, 664, 663, 664, 664, + 664, 664, 666, 664, 666, 666, 666, 666, 657, 666, 657, 657, + 657, 659, 660, 661, 657, 660, 662, 657, 661, 666, 657, 662, + 664, 666, 662, 664, 662, 663, 1367, 1363, 1365, 1371, 1367, 1369, + 1367, 1361, 1363, 1371, 1361, 1367, 1357, 1359, 1361, 1371, 1357, 1361, + 1355, 1357, 1371, 1381, 1353, 1355, 1379, 1355, 1371, 1379, 1371, 1373, + 1381, 1355, 1379, 1377, 1379, 1373, 1375, 1377, 1373, 1389, 1385, 1387, + 1383, 1385, 1389, 1403, 1395, 1397, 1395, 1391, 1393, 1405, 1395, 1403, + 1405, 1391, 1395, 1403, 1397, 1399, 1401, 1403, 1399, 1413, 1407, 1409, + 1411, 1413, 1409, 1415, 1417, 1419, 1421, 1423, 1419, 1419, 1423, 1425, + 1427, 1439, 1425, 1439, 1419, 1425, 1415, 1419, 1439, 1441, 1447, 1415, + 1441, 1415, 1439, 1437, 1439, 1427, 1443, 1445, 1447, 1443, 1447, 1441, + 1431, 1427, 1429, 1433, 1437, 1427, 1431, 1433, 1427, 1435, 1437, 1433, + 1453, 1455, 1456, 1451, 1453, 1456, 1451, 1456, 1449, 1502, 1457, 1459, + 1500, 1459, 1461, 1459, 1500, 1502, 1498, 1461, 1463, 1498, 1500, 1461, + 1499, 1500, 1498, 1465, 1497, 1498, 1465, 1498, 1463, 1497, 1465, 1467, + 1471, 1497, 1467, 1471, 1467, 1469, 1495, 1497, 1471, 1473, 1492, 1495, + 1473, 1495, 1471, 1492, 1473, 1475, 1493, 1495, 1492, 1479, 1475, 1477, + 1481, 1492, 1475, 1481, 1475, 1479, 1481, 1483, 1492, 1489, 1483, 1485, + 1489, 1485, 1487, 1483, 1491, 1492, 1489, 1491, 1483, 1519, 1529, 1504, + 1520, 1529, 1519, 1527, 1529, 1520, 1525, 1527, 1520, 1520, 1522, 1525, + 1521, 1522, 1520, 1505, 1518, 1504, 1519, 1504, 1518, 1524, 1525, 1522, + 1524, 1522, 1523, 1516, 1518, 1505, 1517, 1518, 1516, 1516, 1505, 1506, + 1513, 1511, 1512, 1515, 1516, 1506, 1508, 1510, 1511, 1508, 1511, 1513, + 1514, 1508, 1513, 1507, 1508, 1514, 1507, 1514, 1515, 1507, 1515, 1506 + ] + }, + { + "id": "shape1_part4", + "type": "TRIANGLES", + "indices": [ + 128, 130, 132, 136, 128, 132, 136, 132, 134, 126, 128, 136, + 138, 140, 124, 126, 138, 124, 122, 124, 140, 136, 138, 126 + ] + }, + { + "id": "shape1_part5", + "type": "TRIANGLES", + "indices": [ + 319, 320, 321, 320, 322, 321, 321, 322, 323, 322, 324, 323, + 323, 324, 325, 324, 326, 325, 325, 326, 319, 326, 320, 319, + 319, 319, 321, 319, 321, 321, 321, 321, 323, 321, 323, 323, + 323, 323, 325, 323, 325, 325, 325, 325, 319, 325, 319, 319, + 324, 322, 320, 326, 324, 320, 327, 328, 329, 328, 330, 329, + 329, 330, 331, 330, 332, 331, 331, 332, 333, 332, 334, 333, + 333, 334, 335, 334, 336, 335, 335, 336, 337, 336, 338, 337, + 337, 338, 327, 338, 328, 327, 327, 327, 329, 327, 329, 329, + 329, 329, 331, 329, 331, 331, 331, 331, 333, 331, 333, 333, + 333, 333, 335, 333, 335, 335, 335, 335, 337, 335, 337, 337, + 337, 337, 327, 337, 327, 327, 339, 328, 340, 328, 338, 340, + 340, 338, 341, 338, 342, 341, 341, 342, 343, 342, 344, 343, + 343, 344, 339, 344, 328, 339, 339, 339, 340, 339, 340, 340, + 340, 340, 341, 340, 341, 341, 341, 341, 343, 341, 343, 343, + 343, 343, 339, 343, 339, 339, 1353, 1354, 1355, 1354, 1356, 1355, + 1355, 1356, 1357, 1356, 1358, 1357, 1357, 1358, 1359, 1358, 1360, 1359, + 1359, 1360, 1361, 1360, 1362, 1361, 1361, 1362, 1363, 1362, 1364, 1363, + 1363, 1364, 1365, 1364, 1366, 1365, 1365, 1366, 1367, 1366, 1368, 1367, + 1367, 1368, 1369, 1368, 1370, 1369, 1369, 1370, 1371, 1370, 1372, 1371, + 1371, 1372, 1373, 1372, 1374, 1373, 1373, 1374, 1375, 1374, 1376, 1375, + 1375, 1376, 1377, 1376, 1378, 1377, 1377, 1378, 1379, 1378, 1380, 1379, + 1379, 1380, 1381, 1380, 1382, 1381, 1381, 1382, 1353, 1382, 1354, 1353, + 1353, 1353, 1355, 1353, 1355, 1355, 1355, 1355, 1357, 1355, 1357, 1357, + 1357, 1357, 1359, 1357, 1359, 1359, 1359, 1359, 1361, 1359, 1361, 1361, + 1361, 1361, 1363, 1361, 1363, 1363, 1363, 1363, 1365, 1363, 1365, 1365, + 1365, 1365, 1367, 1365, 1367, 1367, 1367, 1367, 1369, 1367, 1369, 1369, + 1369, 1369, 1371, 1369, 1371, 1371, 1371, 1371, 1373, 1371, 1373, 1373, + 1373, 1373, 1375, 1373, 1375, 1375, 1375, 1375, 1377, 1375, 1377, 1377, + 1377, 1377, 1379, 1377, 1379, 1379, 1379, 1379, 1381, 1379, 1381, 1381, + 1381, 1381, 1353, 1381, 1353, 1353, 1383, 1384, 1385, 1384, 1386, 1385, + 1385, 1386, 1387, 1386, 1388, 1387, 1387, 1388, 1389, 1388, 1390, 1389, + 1389, 1390, 1383, 1390, 1384, 1383, 1383, 1383, 1385, 1383, 1385, 1385, + 1385, 1385, 1387, 1385, 1387, 1387, 1387, 1387, 1389, 1387, 1389, 1389, + 1389, 1389, 1383, 1389, 1383, 1383, 1391, 1392, 1393, 1392, 1394, 1393, + 1393, 1394, 1395, 1394, 1396, 1395, 1395, 1396, 1397, 1396, 1398, 1397, + 1397, 1398, 1399, 1398, 1400, 1399, 1399, 1400, 1401, 1400, 1402, 1401, + 1401, 1402, 1403, 1402, 1404, 1403, 1403, 1404, 1405, 1404, 1406, 1405, + 1405, 1406, 1391, 1406, 1392, 1391, 1391, 1391, 1393, 1391, 1393, 1393, + 1393, 1393, 1395, 1393, 1395, 1395, 1395, 1395, 1397, 1395, 1397, 1397, + 1397, 1397, 1399, 1397, 1399, 1399, 1399, 1399, 1401, 1399, 1401, 1401, + 1401, 1401, 1403, 1401, 1403, 1403, 1403, 1403, 1405, 1403, 1405, 1405, + 1405, 1405, 1391, 1405, 1391, 1391, 1407, 1408, 1409, 1408, 1410, 1409, + 1409, 1410, 1411, 1410, 1412, 1411, 1411, 1412, 1413, 1412, 1414, 1413, + 1413, 1414, 1407, 1414, 1408, 1407, 1407, 1407, 1409, 1407, 1409, 1409, + 1409, 1409, 1411, 1409, 1411, 1411, 1411, 1411, 1413, 1411, 1413, 1413, + 1413, 1413, 1407, 1413, 1407, 1407, 1415, 1416, 1417, 1416, 1418, 1417, + 1417, 1418, 1419, 1418, 1420, 1419, 1419, 1420, 1421, 1420, 1422, 1421, + 1421, 1422, 1423, 1422, 1424, 1423, 1423, 1424, 1425, 1424, 1426, 1425, + 1425, 1426, 1427, 1426, 1428, 1427, 1427, 1428, 1429, 1428, 1430, 1429, + 1429, 1430, 1431, 1430, 1432, 1431, 1431, 1432, 1433, 1432, 1434, 1433, + 1433, 1434, 1435, 1434, 1436, 1435, 1435, 1436, 1437, 1436, 1438, 1437, + 1437, 1438, 1439, 1438, 1440, 1439, 1439, 1440, 1441, 1440, 1442, 1441, + 1441, 1442, 1443, 1442, 1444, 1443, 1443, 1444, 1445, 1444, 1446, 1445, + 1445, 1446, 1447, 1446, 1448, 1447, 1447, 1448, 1415, 1448, 1416, 1415, + 1415, 1415, 1417, 1415, 1417, 1417, 1417, 1417, 1419, 1417, 1419, 1419, + 1419, 1419, 1421, 1419, 1421, 1421, 1421, 1421, 1423, 1421, 1423, 1423, + 1423, 1423, 1425, 1423, 1425, 1425, 1425, 1425, 1427, 1425, 1427, 1427, + 1427, 1427, 1429, 1427, 1429, 1429, 1429, 1429, 1431, 1429, 1431, 1431, + 1431, 1431, 1433, 1431, 1433, 1433, 1433, 1433, 1435, 1433, 1435, 1435, + 1435, 1435, 1437, 1435, 1437, 1437, 1437, 1437, 1439, 1437, 1439, 1439, + 1439, 1439, 1441, 1439, 1441, 1441, 1441, 1441, 1443, 1441, 1443, 1443, + 1443, 1443, 1445, 1443, 1445, 1445, 1445, 1445, 1447, 1445, 1447, 1447, + 1447, 1447, 1415, 1447, 1415, 1415, 1449, 1450, 1451, 1450, 1452, 1451, + 1451, 1452, 1453, 1452, 1454, 1453, 1453, 1454, 1455, 1454, 1367, 1455, + 1455, 1367, 1456, 1367, 1369, 1456, 1456, 1369, 1449, 1369, 1450, 1449, + 1449, 1449, 1451, 1449, 1451, 1451, 1451, 1451, 1453, 1451, 1453, 1453, + 1453, 1453, 1455, 1453, 1455, 1455, 1455, 1455, 1456, 1455, 1456, 1456, + 1456, 1456, 1449, 1456, 1449, 1449, 1450, 1369, 1367, 1450, 1367, 1454, + 1450, 1454, 1452, 1457, 1458, 1459, 1458, 1460, 1459, 1459, 1460, 1461, + 1460, 1462, 1461, 1461, 1462, 1463, 1462, 1464, 1463, 1463, 1464, 1465, + 1464, 1466, 1465, 1465, 1466, 1467, 1466, 1468, 1467, 1467, 1468, 1469, + 1468, 1470, 1469, 1469, 1470, 1471, 1470, 1472, 1471, 1471, 1472, 1473, + 1472, 1474, 1473, 1473, 1474, 1475, 1474, 1476, 1475, 1475, 1476, 1477, + 1476, 1478, 1477, 1477, 1478, 1479, 1478, 1480, 1479, 1479, 1480, 1481, + 1480, 1482, 1481, 1481, 1482, 1483, 1482, 1484, 1483, 1483, 1484, 1485, + 1484, 1486, 1485, 1485, 1486, 1487, 1486, 1488, 1487, 1487, 1488, 1489, + 1488, 1490, 1489, 1489, 1490, 1491, 1490, 1376, 1491, 1491, 1376, 1492, + 1376, 1374, 1492, 1492, 1374, 1493, 1374, 1494, 1493, 1493, 1494, 1495, + 1494, 1496, 1495, 1495, 1496, 1497, 1496, 1370, 1497, 1497, 1370, 1498, + 1370, 1368, 1498, 1498, 1368, 1499, 1368, 1366, 1499, 1499, 1366, 1500, + 1366, 1501, 1500, 1500, 1501, 1502, 1501, 1503, 1502, 1502, 1503, 1457, + 1503, 1458, 1457, 1457, 1457, 1459, 1457, 1459, 1459, 1459, 1459, 1461, + 1459, 1461, 1461, 1461, 1461, 1463, 1461, 1463, 1463, 1463, 1463, 1465, + 1463, 1465, 1465, 1465, 1465, 1467, 1465, 1467, 1467, 1467, 1467, 1469, + 1467, 1469, 1469, 1469, 1469, 1471, 1469, 1471, 1471, 1471, 1471, 1473, + 1471, 1473, 1473, 1473, 1473, 1475, 1473, 1475, 1475, 1475, 1475, 1477, + 1475, 1477, 1477, 1477, 1477, 1479, 1477, 1479, 1479, 1479, 1479, 1481, + 1479, 1481, 1481, 1481, 1481, 1483, 1481, 1483, 1483, 1483, 1483, 1485, + 1483, 1485, 1485, 1485, 1485, 1487, 1485, 1487, 1487, 1487, 1487, 1489, + 1487, 1489, 1489, 1489, 1489, 1491, 1489, 1491, 1491, 1491, 1491, 1492, + 1491, 1492, 1492, 1492, 1492, 1493, 1492, 1493, 1493, 1493, 1493, 1495, + 1493, 1495, 1495, 1495, 1495, 1497, 1495, 1497, 1497, 1497, 1497, 1498, + 1497, 1498, 1498, 1498, 1498, 1499, 1498, 1499, 1499, 1499, 1499, 1500, + 1499, 1500, 1500, 1500, 1500, 1502, 1500, 1502, 1502, 1502, 1502, 1457, + 1502, 1457, 1457, 1504, 1360, 1505, 1360, 1358, 1505, 1505, 1358, 1506, + 1358, 1356, 1506, 1506, 1356, 1507, 1356, 1354, 1507, 1507, 1354, 1508, + 1354, 1509, 1508, 1508, 1509, 1510, 1509, 1442, 1510, 1510, 1442, 1511, + 1442, 1440, 1511, 1511, 1440, 1512, 1440, 1438, 1512, 1512, 1438, 1513, + 1438, 1436, 1513, 1513, 1436, 1514, 1436, 1434, 1514, 1514, 1434, 1515, + 1434, 1432, 1515, 1515, 1432, 1516, 1432, 1430, 1516, 1516, 1430, 1517, + 1430, 1428, 1517, 1517, 1428, 1518, 1428, 1426, 1518, 1518, 1426, 1519, + 1426, 1424, 1519, 1519, 1424, 1520, 1424, 1422, 1520, 1520, 1422, 1521, + 1422, 1420, 1521, 1521, 1420, 1522, 1420, 1418, 1522, 1522, 1418, 1523, + 1418, 1416, 1523, 1523, 1416, 1524, 1416, 1448, 1524, 1524, 1448, 1525, + 1448, 1526, 1525, 1525, 1526, 1527, 1526, 1528, 1527, 1527, 1528, 1529, + 1528, 1530, 1529, 1529, 1530, 1504, 1530, 1360, 1504, 1504, 1504, 1505, + 1504, 1505, 1505, 1505, 1505, 1506, 1505, 1506, 1506, 1506, 1506, 1507, + 1506, 1507, 1507, 1507, 1507, 1508, 1507, 1508, 1508, 1508, 1508, 1510, + 1508, 1510, 1510, 1510, 1510, 1511, 1510, 1511, 1511, 1511, 1511, 1512, + 1511, 1512, 1512, 1512, 1512, 1513, 1512, 1513, 1513, 1513, 1513, 1514, + 1513, 1514, 1514, 1514, 1514, 1515, 1514, 1515, 1515, 1515, 1515, 1516, + 1515, 1516, 1516, 1516, 1516, 1517, 1516, 1517, 1517, 1517, 1517, 1518, + 1517, 1518, 1518, 1518, 1518, 1519, 1518, 1519, 1519, 1519, 1519, 1520, + 1519, 1520, 1520, 1520, 1520, 1521, 1520, 1521, 1521, 1521, 1521, 1522, + 1521, 1522, 1522, 1522, 1522, 1523, 1522, 1523, 1523, 1523, 1523, 1524, + 1523, 1524, 1524, 1524, 1524, 1525, 1524, 1525, 1525, 1525, 1525, 1527, + 1525, 1527, 1527, 1527, 1527, 1529, 1527, 1529, 1529, 1529, 1529, 1504, + 1529, 1504, 1504 + ] + }, + { + "id": "shape1_part6", + "type": "TRIANGLES", + "indices": [ + 2195, 2196, 2197, 2196, 2198, 2197, 2197, 2198, 2199, 2198, 2200, 2199, + 2199, 2200, 2201, 2200, 2202, 2201, 2201, 2202, 1591, 2202, 1592, 1591, + 1591, 1592, 1589, 1592, 1590, 1589, 1589, 1590, 1587, 1590, 1588, 1587, + 1587, 1588, 1585, 1588, 1586, 1585, 1585, 1586, 2203, 1586, 2204, 2203, + 2203, 2204, 2195, 2204, 2196, 2195, 2195, 2195, 2197, 2195, 2197, 2197, + 2197, 2197, 2199, 2197, 2199, 2199, 2199, 2199, 2201, 2199, 2201, 2201, + 2201, 2201, 1591, 2201, 1591, 1591, 1591, 1591, 1589, 1591, 1589, 1589, + 1589, 1589, 1587, 1589, 1587, 1587, 1587, 1587, 1585, 1587, 1585, 1585, + 1585, 1585, 2203, 1585, 2203, 2203, 2203, 2203, 2195, 2203, 2195, 2195 + ] + }, + { + "id": "shape1_part7", + "type": "TRIANGLES", + "indices": [ + 1585, 2203, 2195, 1587, 1585, 2195, 1589, 1587, 2195, 2201, 1589, 2195, + 2197, 2201, 2195, 2199, 2201, 2197, 1591, 1589, 2201 + ] + }, + { + "id": "shape1_part8", + "type": "TRIANGLES", + "indices": [ + 2388, 2389, 2390, 2389, 2391, 2390, 2390, 2391, 2392, 2391, 2393, 2392, + 2392, 2393, 2394, 2393, 2395, 2394, 2394, 2395, 2396, 2395, 2397, 2396, + 2396, 2397, 2398, 2397, 2399, 2398, 2398, 2399, 2400, 2399, 2401, 2400, + 2400, 2401, 2388, 2401, 2389, 2388, 2402, 2388, 2403, 2388, 2390, 2403, + 2403, 2390, 2404, 2390, 2392, 2404, 2404, 2392, 2394, 2392, 2394, 2394, + 2394, 2394, 2405, 2394, 2396, 2405, 2405, 2396, 2406, 2396, 2398, 2406, + 2406, 2398, 2407, 2398, 2400, 2407, 2407, 2400, 2402, 2400, 2388, 2402, + 2395, 2393, 2389, 2399, 2395, 2389, 2401, 2399, 2389, 2408, 2409, 2394, + 2409, 2395, 2394, 2394, 2395, 2392, 2395, 2393, 2392, 2392, 2393, 2388, + 2393, 2389, 2388, 2388, 2389, 2400, 2389, 2401, 2400, 2400, 2401, 2410, + 2401, 2411, 2410, 2410, 2411, 2412, 2411, 2413, 2412, 2412, 2413, 2414, + 2413, 2415, 2414, 2414, 2415, 2416, 2415, 2417, 2416, 2416, 2417, 2418, + 2417, 2419, 2418, 2418, 2419, 2420, 2419, 2421, 2420, 2420, 2421, 2422, + 2421, 2423, 2422, 2422, 2423, 2424, 2423, 2425, 2424, 2424, 2425, 2426, + 2425, 2427, 2426, 2426, 2427, 2428, 2427, 2429, 2428, 2428, 2429, 2430, + 2429, 2431, 2430, 2430, 2431, 2432, 2431, 2433, 2432, 2432, 2433, 2434, + 2433, 2435, 2434, 2434, 2435, 2436, 2435, 2437, 2436, 2436, 2437, 2438, + 2437, 2439, 2438, 2438, 2439, 2440, 2439, 2441, 2440, 2440, 2441, 2442, + 2441, 2443, 2442, 2442, 2443, 2444, 2443, 2445, 2444, 2444, 2445, 2446, + 2445, 2447, 2446, 2446, 2447, 2448, 2447, 2449, 2448, 2448, 2449, 2450, + 2449, 2451, 2450, 2450, 2451, 2452, 2451, 2453, 2452, 2452, 2453, 2454, + 2453, 2455, 2454, 2454, 2455, 2456, 2455, 2457, 2456, 2456, 2457, 2458, + 2457, 2459, 2458, 2458, 2459, 2460, 2459, 2461, 2460, 2460, 2461, 2462, + 2461, 2463, 2462, 2462, 2463, 2464, 2463, 2465, 2464, 2464, 2465, 2466, + 2465, 2467, 2466, 2466, 2467, 2468, 2467, 2469, 2468, 2468, 2469, 2470, + 2469, 2471, 2470, 2470, 2471, 2472, 2471, 2473, 2472, 2472, 2473, 2474, + 2473, 2475, 2474, 2474, 2475, 2476, 2475, 2477, 2476, 2476, 2477, 2478, + 2477, 2479, 2478, 2478, 2479, 2480, 2479, 2481, 2480, 2480, 2481, 2482, + 2481, 2483, 2482, 2482, 2483, 2484, 2483, 2485, 2484, 2484, 2485, 2486, + 2485, 2487, 2486, 2486, 2487, 2488, 2487, 2489, 2488, 2488, 2489, 2490, + 2489, 2491, 2490, 2490, 2491, 2492, 2491, 2493, 2492, 2492, 2493, 2494, + 2493, 2495, 2494, 2494, 2495, 2496, 2495, 2497, 2496, 2496, 2497, 2498, + 2497, 2499, 2498, 2498, 2499, 2500, 2499, 2501, 2500, 2500, 2501, 2408, + 2501, 2409, 2408, 2408, 2408, 2394, 2408, 2394, 2394, 2394, 2394, 2392, + 2394, 2392, 2392, 2392, 2392, 2388, 2392, 2388, 2388, 2388, 2388, 2400, + 2388, 2400, 2400, 2400, 2400, 2410, 2400, 2410, 2410, 2410, 2410, 2412, + 2410, 2412, 2412, 2412, 2412, 2414, 2412, 2414, 2414, 2414, 2414, 2416, + 2414, 2416, 2416, 2416, 2416, 2418, 2416, 2418, 2418, 2418, 2418, 2420, + 2418, 2420, 2420, 2420, 2420, 2422, 2420, 2422, 2422, 2422, 2422, 2424, + 2422, 2424, 2424, 2424, 2424, 2426, 2424, 2426, 2426, 2426, 2426, 2428, + 2426, 2428, 2428, 2428, 2428, 2430, 2428, 2430, 2430, 2430, 2430, 2432, + 2430, 2432, 2432, 2432, 2432, 2434, 2432, 2434, 2434, 2434, 2434, 2436, + 2434, 2436, 2436, 2436, 2436, 2438, 2436, 2438, 2438, 2438, 2438, 2440, + 2438, 2440, 2440, 2440, 2440, 2442, 2440, 2442, 2442, 2442, 2442, 2444, + 2442, 2444, 2444, 2444, 2444, 2446, 2444, 2446, 2446, 2446, 2446, 2448, + 2446, 2448, 2448, 2448, 2448, 2450, 2448, 2450, 2450, 2450, 2450, 2452, + 2450, 2452, 2452, 2452, 2452, 2454, 2452, 2454, 2454, 2454, 2454, 2456, + 2454, 2456, 2456, 2456, 2456, 2458, 2456, 2458, 2458, 2458, 2458, 2460, + 2458, 2460, 2460, 2460, 2460, 2462, 2460, 2462, 2462, 2462, 2462, 2464, + 2462, 2464, 2464, 2464, 2464, 2466, 2464, 2466, 2466, 2466, 2466, 2468, + 2466, 2468, 2468, 2468, 2468, 2470, 2468, 2470, 2470, 2470, 2470, 2472, + 2470, 2472, 2472, 2472, 2472, 2474, 2472, 2474, 2474, 2474, 2474, 2476, + 2474, 2476, 2476, 2476, 2476, 2478, 2476, 2478, 2478, 2478, 2478, 2480, + 2478, 2480, 2480, 2480, 2480, 2482, 2480, 2482, 2482, 2482, 2482, 2484, + 2482, 2484, 2484, 2484, 2484, 2486, 2484, 2486, 2486, 2486, 2486, 2488, + 2486, 2488, 2488, 2488, 2488, 2490, 2488, 2490, 2490, 2490, 2490, 2492, + 2490, 2492, 2492, 2492, 2492, 2494, 2492, 2494, 2494, 2494, 2494, 2496, + 2494, 2496, 2496, 2496, 2496, 2498, 2496, 2498, 2498, 2498, 2498, 2500, + 2498, 2500, 2500, 2500, 2500, 2408, 2500, 2408, 2408, 2501, 2499, 2497, + 2497, 2495, 2493, 2493, 2491, 2489, 2489, 2487, 2485, 2485, 2483, 2481, + 2485, 2481, 2479, 2479, 2477, 2475, 2475, 2473, 2471, 2475, 2471, 2469, + 2479, 2475, 2469, 2485, 2479, 2469, 2489, 2485, 2469, 2467, 2465, 2463, + 2463, 2461, 2459, 2467, 2463, 2459, 2459, 2457, 2455, 2467, 2459, 2455, + 2467, 2455, 2453, 2467, 2453, 2451, 2467, 2451, 2449, 2469, 2467, 2449, + 2489, 2469, 2449, 2493, 2489, 2449, 2497, 2493, 2449, 2501, 2497, 2449, + 2409, 2501, 2449, 2449, 2447, 2445, 2449, 2445, 2443, 2449, 2443, 2441, + 2449, 2441, 2439, 2449, 2439, 2437, 2449, 2437, 2435, 2435, 2433, 2431, + 2449, 2435, 2431, 2449, 2431, 2429, 2449, 2429, 2427, 2449, 2427, 2425, + 2423, 2421, 2419, 2425, 2423, 2419, 2425, 2419, 2417, 2425, 2417, 2415, + 2425, 2415, 2413, 2425, 2413, 2411, 2425, 2411, 2401, 2425, 2401, 2389, + 2449, 2425, 2389, 2449, 2389, 2393, 2409, 2449, 2393, 2409, 2393, 2395 + ] + }, + { + "id": "shape1_part9", + "type": "TRIANGLES", + "indices": [ + 2406, 2407, 2402, 2403, 2406, 2402, 2405, 2406, 2403, 2405, 2403, 2404, + 2394, 2405, 2404, 2448, 2442, 2444, 2448, 2444, 2446, 2448, 2440, 2442, + 2448, 2468, 2440, 2466, 2468, 2448, 2466, 2448, 2450, 2470, 2440, 2468, + 2472, 2440, 2470, 2474, 2438, 2440, 2472, 2474, 2440, 2464, 2466, 2450, + 2476, 2438, 2474, 2478, 2436, 2438, 2476, 2478, 2438, 2458, 2462, 2450, + 2464, 2450, 2462, 2480, 2436, 2478, 2450, 2452, 2458, 2460, 2462, 2458, + 2482, 2436, 2480, 2454, 2458, 2452, 2484, 2436, 2482, 2434, 2436, 2484, + 2430, 2432, 2434, 2486, 2434, 2484, 2456, 2458, 2454, 2488, 2434, 2486, + 2388, 2428, 2430, 2490, 2434, 2488, 2492, 2430, 2434, 2490, 2492, 2434, + 2392, 2388, 2430, 2492, 2392, 2430, 2494, 2392, 2492, 2496, 2392, 2494, + 2388, 2426, 2428, 2424, 2426, 2388, 2424, 2388, 2422, 2422, 2388, 2420, + 2400, 2410, 2412, 2400, 2412, 2414, 2400, 2414, 2416, 2498, 2394, 2392, + 2400, 2416, 2418, 2400, 2418, 2388, 2388, 2418, 2420, 2498, 2392, 2496, + 2500, 2394, 2498, 2408, 2394, 2500 + ] + }, + { + "id": "shape2_part1", + "type": "TRIANGLES", + "indices": [ + 2502, 2503, 2504, 2503, 2505, 2504, 2504, 2505, 2506, 2505, 2507, 2506, + 2506, 2507, 2508, 2507, 2509, 2508, 2507, 2505, 2509, 2505, 2503, 2509, + 2509, 2503, 2508, 2503, 2502, 2508, 2508, 2502, 2506, 2502, 2504, 2506, + 2510, 2511, 2512, 2511, 2513, 2512, 2512, 2513, 2514, 2513, 2515, 2514, + 2514, 2515, 2516, 2515, 2517, 2516, 2515, 2513, 2517, 2513, 2511, 2517, + 2517, 2511, 2516, 2511, 2510, 2516, 2516, 2510, 2514, 2510, 2512, 2514, + 2518, 2519, 2520, 2519, 2521, 2520, 2520, 2521, 2522, 2521, 2523, 2522, + 2522, 2523, 2524, 2523, 2525, 2524, 2523, 2521, 2525, 2521, 2519, 2525, + 2525, 2519, 2524, 2519, 2518, 2524, 2524, 2518, 2522, 2518, 2520, 2522, + 2526, 2527, 2528, 2527, 2529, 2528, 2528, 2529, 2530, 2529, 2531, 2530, + 2530, 2531, 2532, 2531, 2533, 2532, 2531, 2529, 2533, 2529, 2527, 2533, + 2533, 2527, 2532, 2527, 2526, 2532, 2532, 2526, 2530, 2526, 2528, 2530, + 2534, 2535, 2536, 2535, 2537, 2536, 2536, 2537, 2538, 2537, 2539, 2538, + 2538, 2539, 2540, 2539, 2541, 2540, 2539, 2537, 2541, 2537, 2535, 2541, + 2541, 2535, 2540, 2535, 2534, 2540, 2540, 2534, 2538, 2534, 2536, 2538, + 2542, 2543, 2544, 2543, 2545, 2544, 2544, 2545, 2546, 2545, 2547, 2546, + 2546, 2547, 2548, 2547, 2549, 2548, 2547, 2545, 2549, 2545, 2543, 2549, + 2549, 2543, 2548, 2543, 2542, 2548, 2548, 2542, 2546, 2542, 2544, 2546, + 2550, 2551, 2552, 2551, 2553, 2552, 2552, 2553, 2554, 2553, 2555, 2554, + 2554, 2555, 2556, 2555, 2557, 2556, 2555, 2553, 2557, 2553, 2551, 2557, + 2557, 2551, 2556, 2551, 2550, 2556, 2556, 2550, 2554, 2550, 2552, 2554, + 2558, 2559, 2560, 2559, 2561, 2560, 2560, 2561, 2562, 2561, 2563, 2562, + 2562, 2563, 2564, 2563, 2565, 2564, 2563, 2561, 2565, 2561, 2559, 2565, + 2565, 2559, 2564, 2559, 2558, 2564, 2564, 2558, 2562, 2558, 2560, 2562, + 2566, 2567, 2568, 2567, 2569, 2568, 2568, 2569, 2570, 2569, 2571, 2570, + 2570, 2571, 2572, 2571, 2573, 2572, 2571, 2569, 2573, 2569, 2567, 2573, + 2573, 2567, 2572, 2567, 2566, 2572, 2572, 2566, 2570, 2566, 2568, 2570, + 2574, 2575, 2576, 2575, 2577, 2576, 2576, 2577, 2578, 2577, 2579, 2578, + 2578, 2579, 2580, 2579, 2581, 2580, 2579, 2577, 2581, 2577, 2575, 2581, + 2581, 2575, 2580, 2575, 2574, 2580, 2580, 2574, 2578, 2574, 2576, 2578, + 2582, 2583, 2584, 2583, 2585, 2584, 2584, 2585, 2586, 2585, 2587, 2586, + 2586, 2587, 2588, 2587, 2589, 2588, 2587, 2585, 2589, 2585, 2583, 2589, + 2589, 2583, 2588, 2583, 2582, 2588, 2588, 2582, 2586, 2582, 2584, 2586, + 2590, 2591, 2592, 2591, 2593, 2592, 2592, 2593, 2594, 2593, 2595, 2594, + 2594, 2595, 2596, 2595, 2597, 2596, 2595, 2593, 2597, 2593, 2591, 2597, + 2597, 2591, 2596, 2591, 2590, 2596, 2596, 2590, 2594, 2590, 2592, 2594 + ] + } + ] + } + ], + "materials": [ + { + "id": "ENTRANCE_DEFAULT_0", + "ambient": [ 0.101961, 0.000000, 0.000000], + "diffuse": [ 0.101961, 0.000000, 0.000000], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "BUILDING_DEFAULT_0", + "ambient": [ 0.501961, 0.450980, 0.274510], + "diffuse": [ 0.501961, 0.450980, 0.274510], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "ROOF_DEFAULT_0", + "ambient": [ 0.400000, 0.000000, 0.000000], + "diffuse": [ 0.400000, 0.000000, 0.000000], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_0_0", + "ambient": [ 0.196078, 0.196078, 0.196078], + "diffuse": [ 0.196078, 0.196078, 0.196078], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_1_0", + "ambient": [ 0.235294, 0.215686, 0.215686], + "diffuse": [ 0.235294, 0.215686, 0.215686], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_2_0", + "ambient": [ 0.470588, 0.470588, 0.470588], + "diffuse": [ 0.470588, 0.470588, 0.470588], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_3_0", + "ambient": [ 0.333333, 0.254902, 0.156863], + "diffuse": [ 0.333333, 0.254902, 0.156863], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_4_0", + "ambient": [ 0.149020, 0.149020, 0.149020], + "diffuse": [ 0.149020, 0.149020, 0.149020], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "GLASS_0", + "ambient": [ 0.450980, 0.450980, 0.450980], + "diffuse": [ 0.450980, 0.450980, 0.450980], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "GLASS_ROOF_0", + "ambient": [ 0.450980, 0.450980, 0.450980], + "diffuse": [ 0.450980, 0.450980, 0.450980], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + } + ], + "nodes": [ + { + "id": "test_root", + "children": [ + { + "id": "Building", + "parts": [ + { + "meshpartid": "shape1_part1", + "materialid": "BUILDING_DEFAULT_0" + }, + { + "meshpartid": "shape1_part2", + "materialid": "ROOF_DEFAULT_0" + }, + { + "meshpartid": "shape1_part3", + "materialid": "MAT_0_0" + }, + { + "meshpartid": "shape1_part4", + "materialid": "MAT_1_0" + }, + { + "meshpartid": "shape1_part5", + "materialid": "MAT_2_0" + }, + { + "meshpartid": "shape1_part6", + "materialid": "MAT_3_0" + }, + { + "meshpartid": "shape1_part7", + "materialid": "MAT_4_0" + }, + { + "meshpartid": "shape1_part8", + "materialid": "GLASS_0" + }, + { + "meshpartid": "shape1_part9", + "materialid": "GLASS_ROOF_0" + } + ] + }, + { + "id": "BuildingEntrance", + "parts": [ + { + "meshpartid": "shape2_part1", + "materialid": "ENTRANCE_DEFAULT_0" + } + ] + } + ] + } + ], + "animations": [] } \ No newline at end of file diff --git a/data/g3d/treeA.g3dj b/data/g3d/treeA.g3dj index 3c084d3c..19efbbc5 100644 --- a/data/g3d/treeA.g3dj +++ b/data/g3d/treeA.g3dj @@ -1,177 +1,177 @@ -{ - "version": [ 0, 1], - "id": "", - "meshes": [ - { - "attributes": ["POSITION", "NORMAL", "TEXCOORD0"], - "vertices": [ - -0.003717, -0.043092, 0.000001, 0.000000, -1.000000, 0.000000, 0.000000, 0.000000, - -0.003717, -0.043092, -0.019798, 0.000000, -0.609973, -0.792383, 0.000000, 0.000000, - 0.013430, -0.043092, -0.009898, 0.686239, -0.609973, -0.396191, 0.000000, 0.000000, - -0.003717, 0.527242, 0.000001, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.013430, 0.527242, -0.009898, 0.686239, 0.609973, -0.396191, 0.000000, 0.000000, - -0.003717, 0.527242, -0.019798, 0.000000, 0.609973, -0.792383, 0.000000, 0.000000, - 0.013430, -0.043092, 0.009901, 0.686239, -0.609973, 0.396191, 0.000000, 0.000000, - 0.013430, 0.527242, 0.009901, 0.686239, 0.609973, 0.396191, 0.000000, 0.000000, - -0.003717, -0.043092, 0.019801, 0.000000, -0.609973, 0.792383, 0.000000, 0.000000, - -0.003717, 0.527242, 0.019801, 0.000000, 0.609973, 0.792383, 0.000000, 0.000000, - -0.020865, -0.043092, 0.009901, -0.686239, -0.609973, 0.396191, 0.000000, 0.000000, - -0.020865, 0.527242, 0.009901, -0.686239, 0.609973, 0.396191, 0.000000, 0.000000, - -0.020865, -0.043092, -0.009898, -0.686239, -0.609973, -0.396191, 0.000000, 0.000000, - -0.020865, 0.527242, -0.009898, -0.686239, 0.609973, -0.396191, 0.000000, 0.000000, - -0.000052, 1.708732, 0.000001, 0.000000, 1.000000, 0.000000, 0.627643, 0.963260, - -0.056858, 1.692897, -0.056805, -0.359325, 0.861232, -0.359325, 0.811107, 0.943917, - -0.080388, 1.692897, 0.000001, -0.508194, 0.861232, 0.000000, 0.930977, 0.971962, - -0.112293, 1.619116, -0.112239, -0.584552, 0.562639, -0.584552, 0.871491, 0.884983, - -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 1.012361, 0.910828, - -0.176420, 1.422079, -0.176367, -0.675863, 0.293832, -0.675863, 0.903795, 0.728324, - -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 1.035246, 0.751852, - -0.210746, 1.159339, -0.210693, -0.704306, 0.088870, -0.704306, 0.922129, 0.451029, - -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 1.045340, 0.473093, - -0.210605, 0.903175, -0.210552, -0.705252, -0.072024, -0.705252, 0.936767, 0.254108, - -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 1.052424, 0.274946, - -0.180964, 0.617981, -0.180911, -0.685263, -0.246529, -0.685263, 0.956801, 0.142573, - -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 1.061122, 0.161660, - -0.116291, 0.378825, -0.116238, -0.610279, -0.505051, -0.610279, 0.991689, 0.079506, - -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 1.074527, 0.095355, - -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 1.038003, 0.052079, - -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 1.090933, 0.063214, - -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 0.090933, 0.063214, - -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 0.038003, 0.052079, - -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 0.127500, 0.036749, - -0.000051, 0.290116, -0.083580, 0.000000, -0.817194, -0.576312, 0.994047, 0.033372, - -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 1.127500, 0.036749, - -0.000051, 0.378825, -0.164386, 0.000000, -0.505051, -0.863063, 0.893772, 0.053663, - -0.000052, 0.617981, -0.255847, 0.000000, -0.246529, -0.969115, 0.836458, 0.114704, - -0.000052, 0.903175, -0.297766, 0.000000, -0.072024, -0.997375, 0.812221, 0.226047, - -0.000052, 1.159339, -0.297966, 0.000000, 0.088870, -0.996033, 0.797565, 0.423137, - -0.000052, 1.422079, -0.249421, 0.000000, 0.293832, -0.955840, 0.781975, 0.700922, - -0.000052, 1.619116, -0.158731, 0.000000, 0.562639, -0.826655, 0.759783, 0.858997, - -0.000052, 1.692897, -0.080335, 0.000000, 0.861232, -0.508194, 0.728165, 0.921879, - 0.056754, 1.692897, -0.056805, 0.359325, 0.861232, -0.359325, 0.652361, 0.910987, - 0.112189, 1.619116, -0.112239, 0.584552, 0.562639, -0.584552, 0.659906, 0.845090, - 0.176316, 1.422079, -0.176367, 0.675863, 0.293832, -0.675863, 0.665734, 0.684958, - 0.210643, 1.159339, -0.210693, 0.704306, 0.088870, -0.704306, 0.670277, 0.405750, - 0.210502, 0.903175, -0.210552, 0.705252, -0.072024, -0.705252, 0.675032, 0.207335, - 0.180860, 0.617981, -0.180910, 0.685263, -0.246529, -0.685263, 0.684415, 0.093825, - 0.116188, 0.378825, -0.116237, 0.610279, -0.505051, -0.610279, 0.723612, 0.027920, - 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 1.018456, 0.011649, - 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 0.018456, 0.011649, - 0.083530, 0.290116, 0.000002, 0.576159, -0.817316, 0.000000, 0.267608, 0.018648, - 0.164335, 0.378825, 0.000002, 0.863063, -0.505051, 0.000000, 0.457225, 0.035136, - 0.255796, 0.617981, 0.000002, 0.969115, -0.246529, 0.000000, 0.515690, 0.098717, - 0.297716, 0.903175, 0.000002, 0.997375, -0.072024, 0.000000, 0.532803, 0.211513, - 0.297915, 1.159339, 0.000002, 0.996033, 0.088870, 0.000000, 0.541872, 0.409545, - 0.249370, 1.422079, 0.000002, 0.955840, 0.293832, 0.000000, 0.550746, 0.688375, - 0.158680, 1.619116, 0.000002, 0.826655, 0.562639, 0.000000, 0.562378, 0.848006, - 0.080284, 1.692897, 0.000001, 0.508194, 0.861232, 0.000000, 0.577714, 0.913236, - 0.056754, 1.692897, 0.056808, 0.359325, 0.861232, 0.359325, 0.500528, 0.928224, - 0.112188, 1.619116, 0.112242, 0.584552, 0.562670, 0.584552, 0.459880, 0.866817, - 0.176316, 1.422079, 0.176370, 0.675863, 0.293832, 0.675863, 0.433163, 0.709519, - 0.210642, 1.159339, 0.210696, 0.704306, 0.088870, 0.704306, 0.415507, 0.432148, - 0.210501, 0.903175, 0.210555, 0.705252, -0.072024, 0.705252, 0.399773, 0.235351, - 0.180860, 0.617981, 0.180914, 0.685263, -0.246529, 0.685263, 0.375517, 0.124299, - 0.116187, 0.378825, 0.116241, 0.610279, -0.505051, 0.610279, 0.325269, 0.063109, - 0.059049, 0.290116, 0.059103, 0.407361, -0.817347, 0.407392, 0.248452, 0.040330, - -0.000053, 0.290116, 0.083583, 0.000000, -0.817316, 0.576159, 0.199939, 0.056802, - -0.000053, 0.378825, 0.164389, 0.000000, -0.505051, 0.863063, 0.234895, 0.086200, - -0.000053, 0.617981, 0.255850, 0.000000, -0.246529, 0.969115, 0.262269, 0.150492, - -0.000052, 0.903175, 0.297769, 0.000000, -0.072024, 0.997375, 0.278892, 0.262611, - -0.000052, 1.159339, 0.297968, 0.000000, 0.088870, 0.996033, 0.291619, 0.459894, - -0.000052, 1.422079, 0.249424, 0.000000, 0.293832, 0.955840, 0.308400, 0.737559, - -0.000052, 1.619116, 0.158734, 0.000000, 0.562670, 0.826655, 0.340691, 0.894603, - -0.000052, 1.692897, 0.080338, 0.000000, 0.861232, 0.508194, 0.411564, 0.953109, - -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 0.247502, 0.980115, - -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 0.186319, 0.915857, - -0.176420, 1.422079, 0.176369, -0.675863, 0.293832, 0.675863, 0.173739, 0.755927, - -0.210747, 1.159339, 0.210696, -0.704306, 0.088870, 0.704306, 0.168491, 0.476740, - -0.210606, 0.903175, 0.210555, -0.705252, -0.072024, 0.705252, 0.164886, 0.278291, - -0.180964, 0.617981, 0.180913, -0.685263, -0.246529, 0.685263, 0.160531, 0.164632, - -0.116292, 0.378825, 0.116240, -0.610279, -0.505051, 0.610279, 0.153922, 0.097744, - -0.059154, 0.290116, 0.059102, -0.407453, -0.817255, 0.407483, 0.145909, 0.064880, - -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 0.074527, 0.095355, - -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 0.061122, 0.161660, - -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 0.052424, 0.274946, - -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 0.045340, 0.473093, - -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 0.035246, 0.751852, - -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 0.012361, 0.910828, - -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 1.247502, 0.980115, - -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 1.186319, 0.915857 - ], - "parts": [ - { - "id": "mpart1", - "type": "TRIANGLES", - "indices": [ - 0, 1, 2, 3, 4, 5, 0, 2, 6, 3, 7, 4, - 0, 6, 8, 3, 9, 7, 0, 8, 10, 3, 11, 9, - 0, 10, 12, 3, 13, 11, 12, 1, 0, 3, 5, 13, - 1, 5, 4, 1, 4, 2, 2, 4, 7, 2, 7, 6, - 6, 7, 9, 6, 9, 8, 8, 9, 11, 8, 11, 10, - 10, 11, 13, 10, 13, 12, 5, 1, 12, 5, 12, 13, - 14, 15, 16, 16, 15, 17, 16, 17, 18, 18, 17, 19, - 18, 19, 20, 20, 19, 21, 20, 21, 22, 22, 21, 23, - 22, 23, 24, 24, 23, 25, 24, 25, 26, 26, 25, 27, - 26, 27, 28, 28, 27, 29, 28, 29, 30, 31, 32, 33, - 29, 34, 35, 27, 36, 34, 27, 34, 29, 25, 37, 36, - 25, 36, 27, 23, 38, 37, 23, 37, 25, 21, 39, 38, - 21, 38, 23, 19, 40, 39, 19, 39, 21, 17, 41, 40, - 17, 40, 19, 15, 42, 41, 15, 41, 17, 15, 14, 42, - 42, 14, 43, 42, 43, 44, 42, 44, 41, 41, 44, 45, - 41, 45, 40, 40, 45, 46, 40, 46, 39, 39, 46, 47, - 39, 47, 38, 38, 47, 48, 38, 48, 37, 37, 48, 49, - 37, 49, 36, 36, 49, 50, 36, 50, 34, 34, 50, 35, - 51, 52, 33, 49, 53, 52, 49, 52, 50, 48, 54, 53, - 48, 53, 49, 47, 55, 54, 47, 54, 48, 46, 56, 55, - 46, 55, 47, 45, 57, 56, 45, 56, 46, 44, 58, 57, - 44, 57, 45, 43, 59, 58, 43, 58, 44, 43, 14, 59, - 59, 14, 60, 59, 60, 61, 59, 61, 58, 58, 61, 62, - 58, 62, 57, 57, 62, 63, 57, 63, 56, 56, 63, 64, - 56, 64, 55, 55, 64, 65, 55, 65, 54, 54, 65, 66, - 54, 66, 53, 53, 66, 67, 53, 67, 52, 52, 67, 33, - 67, 68, 33, 66, 69, 68, 66, 68, 67, 65, 70, 69, - 65, 69, 66, 64, 71, 70, 64, 70, 65, 63, 72, 71, - 63, 71, 64, 62, 73, 72, 62, 72, 63, 61, 74, 73, - 61, 73, 62, 60, 75, 74, 60, 74, 61, 60, 14, 75, - 75, 14, 76, 75, 76, 77, 75, 77, 74, 74, 77, 78, - 74, 78, 73, 73, 78, 79, 73, 79, 72, 72, 79, 80, - 72, 80, 71, 71, 80, 81, 71, 81, 70, 70, 81, 82, - 70, 82, 69, 69, 82, 83, 69, 83, 68, 68, 83, 33, - 83, 31, 33, 82, 84, 31, 82, 31, 83, 81, 85, 84, - 81, 84, 82, 80, 86, 85, 80, 85, 81, 79, 87, 86, - 79, 86, 80, 78, 88, 87, 78, 87, 79, 77, 89, 88, - 77, 88, 78, 90, 16, 18, 90, 18, 91, 90, 14, 16 - - ] - } - ] - } - ], - "materials": [ - { - "id": "_tree.png", - "diffuse": [ 0.900000, 0.900000, 0.900000], - "specular": [ 0.100000, 0.100000, 0.100000], - "textures": [ - { - "id": "_tree.png", - "filename": "tree.png", - "type": "DIFFUSE" - } - ] - } - ], - "nodes": [ - { - "id": "treeA_root", - "parts": [ - { - "meshpartid": "mpart1", - "materialid": "_tree.png", - "uvMapping": [[ 0]] - } - ] - } - ], - "animations": [] +{ + "version": [ 0, 1], + "id": "", + "meshes": [ + { + "attributes": ["POSITION", "NORMAL", "TEXCOORD0"], + "vertices": [ + -0.003717, -0.043092, 0.000001, 0.000000, -1.000000, 0.000000, 0.000000, 0.000000, + -0.003717, -0.043092, -0.019798, 0.000000, -0.609973, -0.792383, 0.000000, 0.000000, + 0.013430, -0.043092, -0.009898, 0.686239, -0.609973, -0.396191, 0.000000, 0.000000, + -0.003717, 0.527242, 0.000001, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, + 0.013430, 0.527242, -0.009898, 0.686239, 0.609973, -0.396191, 0.000000, 0.000000, + -0.003717, 0.527242, -0.019798, 0.000000, 0.609973, -0.792383, 0.000000, 0.000000, + 0.013430, -0.043092, 0.009901, 0.686239, -0.609973, 0.396191, 0.000000, 0.000000, + 0.013430, 0.527242, 0.009901, 0.686239, 0.609973, 0.396191, 0.000000, 0.000000, + -0.003717, -0.043092, 0.019801, 0.000000, -0.609973, 0.792383, 0.000000, 0.000000, + -0.003717, 0.527242, 0.019801, 0.000000, 0.609973, 0.792383, 0.000000, 0.000000, + -0.020865, -0.043092, 0.009901, -0.686239, -0.609973, 0.396191, 0.000000, 0.000000, + -0.020865, 0.527242, 0.009901, -0.686239, 0.609973, 0.396191, 0.000000, 0.000000, + -0.020865, -0.043092, -0.009898, -0.686239, -0.609973, -0.396191, 0.000000, 0.000000, + -0.020865, 0.527242, -0.009898, -0.686239, 0.609973, -0.396191, 0.000000, 0.000000, + -0.000052, 1.708732, 0.000001, 0.000000, 1.000000, 0.000000, 0.627643, 0.963260, + -0.056858, 1.692897, -0.056805, -0.359325, 0.861232, -0.359325, 0.811107, 0.943917, + -0.080388, 1.692897, 0.000001, -0.508194, 0.861232, 0.000000, 0.930977, 0.971962, + -0.112293, 1.619116, -0.112239, -0.584552, 0.562639, -0.584552, 0.871491, 0.884983, + -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 1.012361, 0.910828, + -0.176420, 1.422079, -0.176367, -0.675863, 0.293832, -0.675863, 0.903795, 0.728324, + -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 1.035246, 0.751852, + -0.210746, 1.159339, -0.210693, -0.704306, 0.088870, -0.704306, 0.922129, 0.451029, + -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 1.045340, 0.473093, + -0.210605, 0.903175, -0.210552, -0.705252, -0.072024, -0.705252, 0.936767, 0.254108, + -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 1.052424, 0.274946, + -0.180964, 0.617981, -0.180911, -0.685263, -0.246529, -0.685263, 0.956801, 0.142573, + -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 1.061122, 0.161660, + -0.116291, 0.378825, -0.116238, -0.610279, -0.505051, -0.610279, 0.991689, 0.079506, + -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 1.074527, 0.095355, + -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 1.038003, 0.052079, + -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 1.090933, 0.063214, + -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 0.090933, 0.063214, + -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 0.038003, 0.052079, + -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 0.127500, 0.036749, + -0.000051, 0.290116, -0.083580, 0.000000, -0.817194, -0.576312, 0.994047, 0.033372, + -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 1.127500, 0.036749, + -0.000051, 0.378825, -0.164386, 0.000000, -0.505051, -0.863063, 0.893772, 0.053663, + -0.000052, 0.617981, -0.255847, 0.000000, -0.246529, -0.969115, 0.836458, 0.114704, + -0.000052, 0.903175, -0.297766, 0.000000, -0.072024, -0.997375, 0.812221, 0.226047, + -0.000052, 1.159339, -0.297966, 0.000000, 0.088870, -0.996033, 0.797565, 0.423137, + -0.000052, 1.422079, -0.249421, 0.000000, 0.293832, -0.955840, 0.781975, 0.700922, + -0.000052, 1.619116, -0.158731, 0.000000, 0.562639, -0.826655, 0.759783, 0.858997, + -0.000052, 1.692897, -0.080335, 0.000000, 0.861232, -0.508194, 0.728165, 0.921879, + 0.056754, 1.692897, -0.056805, 0.359325, 0.861232, -0.359325, 0.652361, 0.910987, + 0.112189, 1.619116, -0.112239, 0.584552, 0.562639, -0.584552, 0.659906, 0.845090, + 0.176316, 1.422079, -0.176367, 0.675863, 0.293832, -0.675863, 0.665734, 0.684958, + 0.210643, 1.159339, -0.210693, 0.704306, 0.088870, -0.704306, 0.670277, 0.405750, + 0.210502, 0.903175, -0.210552, 0.705252, -0.072024, -0.705252, 0.675032, 0.207335, + 0.180860, 0.617981, -0.180910, 0.685263, -0.246529, -0.685263, 0.684415, 0.093825, + 0.116188, 0.378825, -0.116237, 0.610279, -0.505051, -0.610279, 0.723612, 0.027920, + 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 1.018456, 0.011649, + 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 0.018456, 0.011649, + 0.083530, 0.290116, 0.000002, 0.576159, -0.817316, 0.000000, 0.267608, 0.018648, + 0.164335, 0.378825, 0.000002, 0.863063, -0.505051, 0.000000, 0.457225, 0.035136, + 0.255796, 0.617981, 0.000002, 0.969115, -0.246529, 0.000000, 0.515690, 0.098717, + 0.297716, 0.903175, 0.000002, 0.997375, -0.072024, 0.000000, 0.532803, 0.211513, + 0.297915, 1.159339, 0.000002, 0.996033, 0.088870, 0.000000, 0.541872, 0.409545, + 0.249370, 1.422079, 0.000002, 0.955840, 0.293832, 0.000000, 0.550746, 0.688375, + 0.158680, 1.619116, 0.000002, 0.826655, 0.562639, 0.000000, 0.562378, 0.848006, + 0.080284, 1.692897, 0.000001, 0.508194, 0.861232, 0.000000, 0.577714, 0.913236, + 0.056754, 1.692897, 0.056808, 0.359325, 0.861232, 0.359325, 0.500528, 0.928224, + 0.112188, 1.619116, 0.112242, 0.584552, 0.562670, 0.584552, 0.459880, 0.866817, + 0.176316, 1.422079, 0.176370, 0.675863, 0.293832, 0.675863, 0.433163, 0.709519, + 0.210642, 1.159339, 0.210696, 0.704306, 0.088870, 0.704306, 0.415507, 0.432148, + 0.210501, 0.903175, 0.210555, 0.705252, -0.072024, 0.705252, 0.399773, 0.235351, + 0.180860, 0.617981, 0.180914, 0.685263, -0.246529, 0.685263, 0.375517, 0.124299, + 0.116187, 0.378825, 0.116241, 0.610279, -0.505051, 0.610279, 0.325269, 0.063109, + 0.059049, 0.290116, 0.059103, 0.407361, -0.817347, 0.407392, 0.248452, 0.040330, + -0.000053, 0.290116, 0.083583, 0.000000, -0.817316, 0.576159, 0.199939, 0.056802, + -0.000053, 0.378825, 0.164389, 0.000000, -0.505051, 0.863063, 0.234895, 0.086200, + -0.000053, 0.617981, 0.255850, 0.000000, -0.246529, 0.969115, 0.262269, 0.150492, + -0.000052, 0.903175, 0.297769, 0.000000, -0.072024, 0.997375, 0.278892, 0.262611, + -0.000052, 1.159339, 0.297968, 0.000000, 0.088870, 0.996033, 0.291619, 0.459894, + -0.000052, 1.422079, 0.249424, 0.000000, 0.293832, 0.955840, 0.308400, 0.737559, + -0.000052, 1.619116, 0.158734, 0.000000, 0.562670, 0.826655, 0.340691, 0.894603, + -0.000052, 1.692897, 0.080338, 0.000000, 0.861232, 0.508194, 0.411564, 0.953109, + -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 0.247502, 0.980115, + -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 0.186319, 0.915857, + -0.176420, 1.422079, 0.176369, -0.675863, 0.293832, 0.675863, 0.173739, 0.755927, + -0.210747, 1.159339, 0.210696, -0.704306, 0.088870, 0.704306, 0.168491, 0.476740, + -0.210606, 0.903175, 0.210555, -0.705252, -0.072024, 0.705252, 0.164886, 0.278291, + -0.180964, 0.617981, 0.180913, -0.685263, -0.246529, 0.685263, 0.160531, 0.164632, + -0.116292, 0.378825, 0.116240, -0.610279, -0.505051, 0.610279, 0.153922, 0.097744, + -0.059154, 0.290116, 0.059102, -0.407453, -0.817255, 0.407483, 0.145909, 0.064880, + -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 0.074527, 0.095355, + -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 0.061122, 0.161660, + -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 0.052424, 0.274946, + -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 0.045340, 0.473093, + -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 0.035246, 0.751852, + -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 0.012361, 0.910828, + -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 1.247502, 0.980115, + -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 1.186319, 0.915857 + ], + "parts": [ + { + "id": "mpart1", + "type": "TRIANGLES", + "indices": [ + 0, 1, 2, 3, 4, 5, 0, 2, 6, 3, 7, 4, + 0, 6, 8, 3, 9, 7, 0, 8, 10, 3, 11, 9, + 0, 10, 12, 3, 13, 11, 12, 1, 0, 3, 5, 13, + 1, 5, 4, 1, 4, 2, 2, 4, 7, 2, 7, 6, + 6, 7, 9, 6, 9, 8, 8, 9, 11, 8, 11, 10, + 10, 11, 13, 10, 13, 12, 5, 1, 12, 5, 12, 13, + 14, 15, 16, 16, 15, 17, 16, 17, 18, 18, 17, 19, + 18, 19, 20, 20, 19, 21, 20, 21, 22, 22, 21, 23, + 22, 23, 24, 24, 23, 25, 24, 25, 26, 26, 25, 27, + 26, 27, 28, 28, 27, 29, 28, 29, 30, 31, 32, 33, + 29, 34, 35, 27, 36, 34, 27, 34, 29, 25, 37, 36, + 25, 36, 27, 23, 38, 37, 23, 37, 25, 21, 39, 38, + 21, 38, 23, 19, 40, 39, 19, 39, 21, 17, 41, 40, + 17, 40, 19, 15, 42, 41, 15, 41, 17, 15, 14, 42, + 42, 14, 43, 42, 43, 44, 42, 44, 41, 41, 44, 45, + 41, 45, 40, 40, 45, 46, 40, 46, 39, 39, 46, 47, + 39, 47, 38, 38, 47, 48, 38, 48, 37, 37, 48, 49, + 37, 49, 36, 36, 49, 50, 36, 50, 34, 34, 50, 35, + 51, 52, 33, 49, 53, 52, 49, 52, 50, 48, 54, 53, + 48, 53, 49, 47, 55, 54, 47, 54, 48, 46, 56, 55, + 46, 55, 47, 45, 57, 56, 45, 56, 46, 44, 58, 57, + 44, 57, 45, 43, 59, 58, 43, 58, 44, 43, 14, 59, + 59, 14, 60, 59, 60, 61, 59, 61, 58, 58, 61, 62, + 58, 62, 57, 57, 62, 63, 57, 63, 56, 56, 63, 64, + 56, 64, 55, 55, 64, 65, 55, 65, 54, 54, 65, 66, + 54, 66, 53, 53, 66, 67, 53, 67, 52, 52, 67, 33, + 67, 68, 33, 66, 69, 68, 66, 68, 67, 65, 70, 69, + 65, 69, 66, 64, 71, 70, 64, 70, 65, 63, 72, 71, + 63, 71, 64, 62, 73, 72, 62, 72, 63, 61, 74, 73, + 61, 73, 62, 60, 75, 74, 60, 74, 61, 60, 14, 75, + 75, 14, 76, 75, 76, 77, 75, 77, 74, 74, 77, 78, + 74, 78, 73, 73, 78, 79, 73, 79, 72, 72, 79, 80, + 72, 80, 71, 71, 80, 81, 71, 81, 70, 70, 81, 82, + 70, 82, 69, 69, 82, 83, 69, 83, 68, 68, 83, 33, + 83, 31, 33, 82, 84, 31, 82, 31, 83, 81, 85, 84, + 81, 84, 82, 80, 86, 85, 80, 85, 81, 79, 87, 86, + 79, 86, 80, 78, 88, 87, 78, 87, 79, 77, 89, 88, + 77, 88, 78, 90, 16, 18, 90, 18, 91, 90, 14, 16 + + ] + } + ] + } + ], + "materials": [ + { + "id": "_tree.png", + "diffuse": [ 0.900000, 0.900000, 0.900000], + "specular": [ 0.100000, 0.100000, 0.100000], + "textures": [ + { + "id": "_tree.png", + "filename": "tree.png", + "type": "DIFFUSE" + } + ] + } + ], + "nodes": [ + { + "id": "treeA_root", + "parts": [ + { + "meshpartid": "mpart1", + "materialid": "_tree.png", + "uvMapping": [[ 0]] + } + ] + } + ], + "animations": [] } \ No newline at end of file diff --git a/gradlew.bat b/gradlew.bat index aec99730..8a0b282a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,90 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/jni/jni/Android.mk b/jni/jni/Android.mk index 3ac41939..32d51c05 100644 --- a/jni/jni/Android.mk +++ b/jni/jni/Android.mk @@ -1,14 +1,14 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE := vtm-jni -LOCAL_C_INCLUDES := . libtess2/Include - -LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG -LOCAL_CPPFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG -LOCAL_LDLIBS := -lm -llog -LOCAL_ARM_MODE := arm - +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE := vtm-jni +LOCAL_C_INCLUDES := . libtess2/Include + +LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG +LOCAL_CPPFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -Wall -std=c99 -O2 -ffast-math -DNDEBUG +LOCAL_LDLIBS := -lm -llog +LOCAL_ARM_MODE := arm + LOCAL_SRC_FILES := org.oscim.utils.TessJNI.cpp\ libtess2/Source/sweep.c\ libtess2/Source/priorityq.c\ @@ -18,5 +18,5 @@ LOCAL_SRC_FILES := org.oscim.utils.TessJNI.cpp\ libtess2/Source/dict.c\ libtess2/Source/mesh.c\ gl/utils.c - -include $(BUILD_SHARED_LIBRARY) + +include $(BUILD_SHARED_LIBRARY) diff --git a/jni/jni/build-android32.xml b/jni/jni/build-android32.xml index 4487f924..f216d27b 100644 --- a/jni/jni/build-android32.xml +++ b/jni/jni/build-android32.xml @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - ndk_home: ${env.NDK_HOME} - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + ndk_home: ${env.NDK_HOME} + + + + + + + + + + + + + + + + diff --git a/jni/jni/build-linux64.xml b/jni/jni/build-linux64.xml index c9e3b3c3..527e0e7b 100644 --- a/jni/jni/build-linux64.xml +++ b/jni/jni/build-linux64.xml @@ -1,24 +1,24 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -28,126 +28,126 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java index d8cad18f..58d6831d 100644 --- a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java @@ -1,73 +1,73 @@ -/* - * Copyright 2014 Hannes Janetzek - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.android.test; - -import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; - -import org.oscim.android.MapView; -import org.oscim.layers.TileGridLayer; -import org.oscim.layers.tile.bitmap.BitmapTileLayer; -import org.oscim.layers.tile.buildings.BuildingLayer; -import org.oscim.layers.tile.vector.VectorTileLayer; -import org.oscim.renderer.MapRenderer; -import org.oscim.theme.IRenderTheme; -import org.oscim.theme.ThemeLoader; -import org.oscim.theme.VtmThemes; -import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.geojson.HighroadJsonTileSource; -import org.oscim.tiling.source.geojson.OsmBuildingJsonTileSource; -import org.oscim.tiling.source.geojson.OsmLanduseJsonTileSource; -import org.oscim.tiling.source.geojson.OsmWaterJsonTileSource; - -import android.os.Bundle; - -public class OsmJsonMapActivity extends MapActivity { - - MapView mMapView; - VectorTileLayer mBaseLayer; - TileSource mTileSource; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mTileSource = new OsmWaterJsonTileSource(); - - mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); - mMap.layers().add(new TileGridLayer(mMap)); - - IRenderTheme theme = ThemeLoader.load(VtmThemes.OSMARENDER); - MapRenderer.setBackgroundColor(theme.getMapBackground()); - - VectorTileLayer l; - l = new VectorTileLayer(mMap, new OsmLanduseJsonTileSource()); - l.setRenderTheme(theme); - l.tileRenderer().setOverdrawColor(0); - mMap.layers().add(l); - - l = new VectorTileLayer(mMap, new HighroadJsonTileSource()); - l.setRenderTheme(theme); - l.tileRenderer().setOverdrawColor(0); - mMap.layers().add(l); - - l = new VectorTileLayer(mMap, new OsmBuildingJsonTileSource()); - l.setRenderTheme(theme); - l.tileRenderer().setOverdrawColor(0); - mMap.layers().add(l); - mMap.layers().add(new BuildingLayer(mMap, l)); - - mMap.setMapPosition(53.08, 8.83, Math.pow(2, 16)); - } -} +/* + * Copyright 2014 Hannes Janetzek + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.android.test; + +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + +import org.oscim.android.MapView; +import org.oscim.layers.TileGridLayer; +import org.oscim.layers.tile.bitmap.BitmapTileLayer; +import org.oscim.layers.tile.buildings.BuildingLayer; +import org.oscim.layers.tile.vector.VectorTileLayer; +import org.oscim.renderer.MapRenderer; +import org.oscim.theme.IRenderTheme; +import org.oscim.theme.ThemeLoader; +import org.oscim.theme.VtmThemes; +import org.oscim.tiling.TileSource; +import org.oscim.tiling.source.geojson.HighroadJsonTileSource; +import org.oscim.tiling.source.geojson.OsmBuildingJsonTileSource; +import org.oscim.tiling.source.geojson.OsmLanduseJsonTileSource; +import org.oscim.tiling.source.geojson.OsmWaterJsonTileSource; + +import android.os.Bundle; + +public class OsmJsonMapActivity extends MapActivity { + + MapView mMapView; + VectorTileLayer mBaseLayer; + TileSource mTileSource; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mTileSource = new OsmWaterJsonTileSource(); + + mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); + mMap.layers().add(new TileGridLayer(mMap)); + + IRenderTheme theme = ThemeLoader.load(VtmThemes.OSMARENDER); + MapRenderer.setBackgroundColor(theme.getMapBackground()); + + VectorTileLayer l; + l = new VectorTileLayer(mMap, new OsmLanduseJsonTileSource()); + l.setRenderTheme(theme); + l.tileRenderer().setOverdrawColor(0); + mMap.layers().add(l); + + l = new VectorTileLayer(mMap, new HighroadJsonTileSource()); + l.setRenderTheme(theme); + l.tileRenderer().setOverdrawColor(0); + mMap.layers().add(l); + + l = new VectorTileLayer(mMap, new OsmBuildingJsonTileSource()); + l.setRenderTheme(theme); + l.tileRenderer().setOverdrawColor(0); + mMap.layers().add(l); + mMap.layers().add(new BuildingLayer(mMap, l)); + + mMap.setMapPosition(53.08, 8.83, Math.pow(2, 16)); + } +} diff --git a/vtm-android-gdx/AndroidManifest.xml b/vtm-android-gdx/AndroidManifest.xml index 82d66f20..8d978e08 100644 --- a/vtm-android-gdx/AndroidManifest.xml +++ b/vtm-android-gdx/AndroidManifest.xml @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vtm-android-gdx/res/layout/main.xml b/vtm-android-gdx/res/layout/main.xml index 5c4fde29..777a3e48 100644 --- a/vtm-android-gdx/res/layout/main.xml +++ b/vtm-android-gdx/res/layout/main.xml @@ -1,7 +1,7 @@ - - - + + + \ No newline at end of file diff --git a/vtm-android-gdx/res/values/strings.xml b/vtm-android-gdx/res/values/strings.xml index 7cf8da4f..5622347c 100644 --- a/vtm-android-gdx/res/values/strings.xml +++ b/vtm-android-gdx/res/values/strings.xml @@ -1,4 +1,4 @@ - - - VtmGdx + + + VtmGdx \ No newline at end of file diff --git a/vtm-desktop/src/org/oscim/gdx/GdxMapApp.java b/vtm-desktop/src/org/oscim/gdx/GdxMapApp.java index 063f3aea..1054b985 100644 --- a/vtm-desktop/src/org/oscim/gdx/GdxMapApp.java +++ b/vtm-desktop/src/org/oscim/gdx/GdxMapApp.java @@ -1,90 +1,90 @@ -/* - * Copyright 2013 Hannes Janetzek - * Copyright 2016 devemux86 - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.gdx; - -import org.oscim.awt.AwtGraphics; -import org.oscim.backend.GLAdapter; -import org.oscim.core.Tile; -import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; -import org.oscim.utils.FastMath; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.badlogic.gdx.backends.jglfw.JglfwApplication; -import com.badlogic.gdx.backends.jglfw.JglfwApplicationConfiguration; -import com.badlogic.gdx.utils.SharedLibraryLoader; - -public class GdxMapApp extends GdxMap { - - public static final Logger log = LoggerFactory.getLogger(GdxMapApp.class); - - public static void init() { - // load native library - new SharedLibraryLoader().load("vtm-jni"); - // init globals - AwtGraphics.init(); - GdxAssets.init("assets/"); - GLAdapter.init(new GdxGL()); - GLAdapter.GDX_DESKTOP_QUIRKS = true; - } - - public static void main(String[] args) { - Tile.SIZE = 360; - init(); - new JglfwApplication(new GdxMapApp(), getConfig()); - } - - public static void run(GdxMap map, JglfwApplicationConfiguration config, int tileSize) { - Tile.SIZE = FastMath.clamp(tileSize, 128, 512); - - new JglfwApplication(map, (config == null ? getConfig() : config)); - } - - public static void run(JglfwApplicationConfiguration config, int tileSize, GdxMap map) { - run(map, config, tileSize); - } - - static protected JglfwApplicationConfiguration getConfig() { - JglfwApplicationConfiguration cfg = new JglfwApplicationConfiguration(); - cfg.title = "vtm-gdx"; - cfg.width = 800; - cfg.height = 600; - cfg.stencil = 8; - //cfg.samples = 2; - cfg.foregroundFPS = 30; - cfg.backgroundFPS = 10; - return cfg; - } - - @Override - public void createLayers() { - TileSource tileSource = new OSciMap4TileSource(); - - // TileSource tileSource = new MapFileTileSource(); - // tileSource.setOption("file", "/home/jeff/germany.map"); - - initDefaultLayers(tileSource, false, true, true); - - //mMap.getLayers().add(new BitmapTileLayer(mMap, new ImagicoLandcover(), 20)); - //mMap.getLayers().add(new BitmapTileLayer(mMap, new OSMTileSource(), 20)); - //mMap.getLayers().add(new BitmapTileLayer(mMap, new ArcGISWorldShaded(), 20)); - - mMap.setMapPosition(0, 0, 1 << 2); - } -} +/* + * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.gdx; + +import org.oscim.awt.AwtGraphics; +import org.oscim.backend.GLAdapter; +import org.oscim.core.Tile; +import org.oscim.tiling.TileSource; +import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; +import org.oscim.utils.FastMath; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.badlogic.gdx.backends.jglfw.JglfwApplication; +import com.badlogic.gdx.backends.jglfw.JglfwApplicationConfiguration; +import com.badlogic.gdx.utils.SharedLibraryLoader; + +public class GdxMapApp extends GdxMap { + + public static final Logger log = LoggerFactory.getLogger(GdxMapApp.class); + + public static void init() { + // load native library + new SharedLibraryLoader().load("vtm-jni"); + // init globals + AwtGraphics.init(); + GdxAssets.init("assets/"); + GLAdapter.init(new GdxGL()); + GLAdapter.GDX_DESKTOP_QUIRKS = true; + } + + public static void main(String[] args) { + Tile.SIZE = 360; + init(); + new JglfwApplication(new GdxMapApp(), getConfig()); + } + + public static void run(GdxMap map, JglfwApplicationConfiguration config, int tileSize) { + Tile.SIZE = FastMath.clamp(tileSize, 128, 512); + + new JglfwApplication(map, (config == null ? getConfig() : config)); + } + + public static void run(JglfwApplicationConfiguration config, int tileSize, GdxMap map) { + run(map, config, tileSize); + } + + static protected JglfwApplicationConfiguration getConfig() { + JglfwApplicationConfiguration cfg = new JglfwApplicationConfiguration(); + cfg.title = "vtm-gdx"; + cfg.width = 800; + cfg.height = 600; + cfg.stencil = 8; + //cfg.samples = 2; + cfg.foregroundFPS = 30; + cfg.backgroundFPS = 10; + return cfg; + } + + @Override + public void createLayers() { + TileSource tileSource = new OSciMap4TileSource(); + + // TileSource tileSource = new MapFileTileSource(); + // tileSource.setOption("file", "/home/jeff/germany.map"); + + initDefaultLayers(tileSource, false, true, true); + + //mMap.getLayers().add(new BitmapTileLayer(mMap, new ImagicoLandcover(), 20)); + //mMap.getLayers().add(new BitmapTileLayer(mMap, new OSMTileSource(), 20)); + //mMap.getLayers().add(new BitmapTileLayer(mMap, new ArcGISWorldShaded(), 20)); + + mMap.setMapPosition(0, 0, 1 << 2); + } +} diff --git a/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileDecoder.java b/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileDecoder.java index b1b038b1..f71322d5 100644 --- a/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileDecoder.java +++ b/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileDecoder.java @@ -1,350 +1,350 @@ -/* - * Copyright 2014 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.tiling.source.geojson; - -import static com.fasterxml.jackson.core.JsonToken.END_ARRAY; -import static com.fasterxml.jackson.core.JsonToken.END_OBJECT; -import static com.fasterxml.jackson.core.JsonToken.FIELD_NAME; -import static com.fasterxml.jackson.core.JsonToken.START_ARRAY; -import static com.fasterxml.jackson.core.JsonToken.START_OBJECT; -import static com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_FLOAT; -import static com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_INT; -import static com.fasterxml.jackson.core.JsonToken.VALUE_STRING; -import static org.oscim.core.MercatorProjection.latitudeToY; -import static org.oscim.core.MercatorProjection.longitudeToX; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.LinkedHashMap; - -import org.oscim.core.GeometryBuffer.GeometryType; -import org.oscim.core.MapElement; -import org.oscim.core.Tile; -import org.oscim.tiling.ITileDataSink; -import org.oscim.tiling.source.ITileDecoder; -import org.oscim.utils.ArrayUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; - -public class GeoJsonTileDecoder implements ITileDecoder { - static final Logger log = LoggerFactory.getLogger(GeoJsonTileDecoder.class); - - private final MapElement mMapElement; - private final GeoJsonTileSource mTileSource; - private final LinkedHashMap mTagMap; - private final JsonFactory mJsonFactory; - - private final static char[] FIELD_FEATURES = "features".toCharArray(); - private final static char[] FIELD_GEOMETRY = "geometry".toCharArray(); - private final static char[] FIELD_PROPERTIES = "properties".toCharArray(); - private final static char[] FIELD_COORDINATES = "coordinates".toCharArray(); - private final static char[] FIELD_TYPE = "type".toCharArray(); - - private final static char[] LINETRING = "LineString".toCharArray(); - private final static char[] POLYGON = "Polygon".toCharArray(); - private final static char[] POINT = "Point".toCharArray(); - private final static char[] MULTI_LINESTRING = "MultiLineString".toCharArray(); - private final static char[] MULTI_POLYGON = "MultiPolygon".toCharArray(); - private final static char[] MULTI_POINT = "MultiPoint".toCharArray(); - - private ITileDataSink mTileDataSink; - - private double mTileY, mTileX, mTileScale; - - public GeoJsonTileDecoder(GeoJsonTileSource tileSource) { - mTileSource = tileSource; - mTagMap = new LinkedHashMap(); - mJsonFactory = new JsonFactory(); - - mMapElement = new MapElement(); - mMapElement.layer = 5; - } - - @Override - public boolean decode(Tile tile, ITileDataSink sink, InputStream is) throws IOException { - mTileDataSink = sink; - mTileScale = 1 << tile.zoomLevel; - mTileX = tile.tileX / mTileScale; - mTileY = tile.tileY / mTileScale; - mTileScale *= Tile.SIZE; - - JsonParser jp = mJsonFactory.createParser(new InputStreamReader(is)); - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == FIELD_NAME) { - if (match(jp, FIELD_FEATURES)) { - if (jp.nextToken() != START_ARRAY) - continue; - - while ((t = jp.nextToken()) != null) { - if (t == START_OBJECT) - parseFeature(jp); - - if (t == END_ARRAY) - break; - } - } - } - } - return true; - } - - private void parseFeature(JsonParser jp) - throws JsonParseException, IOException { - - mMapElement.clear(); - mMapElement.tags.clear(); - mTagMap.clear(); - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == FIELD_NAME) { - if (match(jp, FIELD_GEOMETRY)) { - if (jp.nextToken() == START_OBJECT) - parseGeometry(jp); - } - - if (match(jp, FIELD_PROPERTIES)) { - if (jp.nextToken() == START_OBJECT) - parseProperties(jp); - } - continue; - } - if (t == END_OBJECT) - break; - } - - //add tag information - mTileSource.decodeTags(mMapElement, mTagMap); - if (mMapElement.tags.numTags == 0) - return; - - mTileSource.postGeomHook(mMapElement); - - if (mMapElement.type == GeometryType.NONE) - return; - - //process this element - mTileDataSink.process(mMapElement); - } - - private void parseProperties(JsonParser jp) - throws JsonParseException, IOException { - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == FIELD_NAME) { - String text = jp.getCurrentName(); - - t = jp.nextToken(); - if (t == VALUE_STRING) { - mTagMap.put(text, jp.getText()); - } else if (t == VALUE_NUMBER_INT) { - mTagMap.put(text, jp.getNumberValue()); - } - continue; - } - if (t == END_OBJECT) - break; - } - } - - private void parseGeometry(JsonParser jp) - throws JsonParseException, IOException { - - boolean multi = false; - GeometryType type = GeometryType.NONE; - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == FIELD_NAME) { - if (match(jp, FIELD_COORDINATES)) { - if (jp.nextToken() != START_ARRAY) - continue; - if (multi) { - parseMulti(jp, type); - } else { - if (type == GeometryType.POLY) - parsePolygon(jp); - - if (type == GeometryType.LINE) - parseLineString(jp); - - if (type == GeometryType.POINT) - parseCoordinate(jp); - - } - } else if (match(jp, FIELD_TYPE)) { - multi = false; - - jp.nextToken(); - - if (match(jp, LINETRING)) - type = GeometryType.LINE; - else if (match(jp, POLYGON)) - type = GeometryType.POLY; - else if (match(jp, POINT)) - type = GeometryType.POINT; - else if (match(jp, MULTI_LINESTRING)) { - type = GeometryType.LINE; - multi = true; - } - else if (match(jp, MULTI_POLYGON)) { - type = GeometryType.POLY; - multi = true; - } - else if (match(jp, MULTI_POINT)) { - type = GeometryType.POINT; - multi = true; - } - - if (type == GeometryType.POINT) - mMapElement.startPoints(); - } - continue; - } - if (t == END_OBJECT) - break; - } - } - - private void parseMulti(JsonParser jp, GeometryType type) - throws JsonParseException, IOException { - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == END_ARRAY) - break; - - if (t == START_ARRAY) { - if (type == GeometryType.POLY) - parsePolygon(jp); - - else if (type == GeometryType.LINE) - parseLineString(jp); - - else if (type == GeometryType.POINT) - parseCoordinate(jp);; - - } else { - //.... - } - } - } - - private void parsePolygon(JsonParser jp) - throws JsonParseException, IOException { - int ring = 0; - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == START_ARRAY) { - if (ring == 0) - mMapElement.startPolygon(); - else - mMapElement.startHole(); - - ring++; - parseCoordSequence(jp); - removeLastPoint(); - continue; - } - - if (t == END_ARRAY) - break; - } - } - - private void removeLastPoint() { - mMapElement.pointPos -= 2; - mMapElement.index[mMapElement.indexPos] -= 2; - } - - private void parseLineString(JsonParser jp) - throws JsonParseException, IOException { - mMapElement.startLine(); - parseCoordSequence(jp); - } - - private void parseCoordSequence(JsonParser jp) - throws JsonParseException, IOException { - - for (JsonToken t; (t = jp.nextToken()) != null;) { - - if (t == START_ARRAY) { - parseCoordinate(jp); - continue; - } - - if (t == END_ARRAY) - break; - - } - } - - private void parseCoordinate(JsonParser jp) - throws JsonParseException, IOException { - int pos = 0; - double x = 0, y = 0; //, z = 0; - - for (JsonToken t; (t = jp.nextToken()) != null;) { - if (t == VALUE_NUMBER_FLOAT || t == VALUE_NUMBER_INT) { - - // avoid String allocation (by getDouble...) - char[] val = jp.getTextCharacters(); - int offset = jp.getTextOffset(); - int length = jp.getTextLength(); - double c = ArrayUtils.parseNumber(val, offset, offset + length); - - if (pos == 0) - x = c; - if (pos == 1) - y = c; - //if (pos == 2) - //z = c; - - pos++; - continue; - } - - if (t == END_ARRAY) - break; - } - - mMapElement.addPoint((float) ((longitudeToX(x) - mTileX) * mTileScale), - (float) ((latitudeToY(y) - mTileY) * mTileScale)); - - } - - private final static boolean match(JsonParser jp, char[] fieldName) - throws JsonParseException, IOException { - - int length = jp.getTextLength(); - if (length != fieldName.length) - return false; - - char[] val = jp.getTextCharacters(); - int offset = jp.getTextOffset(); - - for (int i = 0; i < length; i++) { - if (fieldName[i] != val[i + offset]) - return false; - } - - return true; - } -} +/* + * Copyright 2014 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.tiling.source.geojson; + +import static com.fasterxml.jackson.core.JsonToken.END_ARRAY; +import static com.fasterxml.jackson.core.JsonToken.END_OBJECT; +import static com.fasterxml.jackson.core.JsonToken.FIELD_NAME; +import static com.fasterxml.jackson.core.JsonToken.START_ARRAY; +import static com.fasterxml.jackson.core.JsonToken.START_OBJECT; +import static com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_FLOAT; +import static com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_INT; +import static com.fasterxml.jackson.core.JsonToken.VALUE_STRING; +import static org.oscim.core.MercatorProjection.latitudeToY; +import static org.oscim.core.MercatorProjection.longitudeToX; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.LinkedHashMap; + +import org.oscim.core.GeometryBuffer.GeometryType; +import org.oscim.core.MapElement; +import org.oscim.core.Tile; +import org.oscim.tiling.ITileDataSink; +import org.oscim.tiling.source.ITileDecoder; +import org.oscim.utils.ArrayUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; + +public class GeoJsonTileDecoder implements ITileDecoder { + static final Logger log = LoggerFactory.getLogger(GeoJsonTileDecoder.class); + + private final MapElement mMapElement; + private final GeoJsonTileSource mTileSource; + private final LinkedHashMap mTagMap; + private final JsonFactory mJsonFactory; + + private final static char[] FIELD_FEATURES = "features".toCharArray(); + private final static char[] FIELD_GEOMETRY = "geometry".toCharArray(); + private final static char[] FIELD_PROPERTIES = "properties".toCharArray(); + private final static char[] FIELD_COORDINATES = "coordinates".toCharArray(); + private final static char[] FIELD_TYPE = "type".toCharArray(); + + private final static char[] LINETRING = "LineString".toCharArray(); + private final static char[] POLYGON = "Polygon".toCharArray(); + private final static char[] POINT = "Point".toCharArray(); + private final static char[] MULTI_LINESTRING = "MultiLineString".toCharArray(); + private final static char[] MULTI_POLYGON = "MultiPolygon".toCharArray(); + private final static char[] MULTI_POINT = "MultiPoint".toCharArray(); + + private ITileDataSink mTileDataSink; + + private double mTileY, mTileX, mTileScale; + + public GeoJsonTileDecoder(GeoJsonTileSource tileSource) { + mTileSource = tileSource; + mTagMap = new LinkedHashMap(); + mJsonFactory = new JsonFactory(); + + mMapElement = new MapElement(); + mMapElement.layer = 5; + } + + @Override + public boolean decode(Tile tile, ITileDataSink sink, InputStream is) throws IOException { + mTileDataSink = sink; + mTileScale = 1 << tile.zoomLevel; + mTileX = tile.tileX / mTileScale; + mTileY = tile.tileY / mTileScale; + mTileScale *= Tile.SIZE; + + JsonParser jp = mJsonFactory.createParser(new InputStreamReader(is)); + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == FIELD_NAME) { + if (match(jp, FIELD_FEATURES)) { + if (jp.nextToken() != START_ARRAY) + continue; + + while ((t = jp.nextToken()) != null) { + if (t == START_OBJECT) + parseFeature(jp); + + if (t == END_ARRAY) + break; + } + } + } + } + return true; + } + + private void parseFeature(JsonParser jp) + throws JsonParseException, IOException { + + mMapElement.clear(); + mMapElement.tags.clear(); + mTagMap.clear(); + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == FIELD_NAME) { + if (match(jp, FIELD_GEOMETRY)) { + if (jp.nextToken() == START_OBJECT) + parseGeometry(jp); + } + + if (match(jp, FIELD_PROPERTIES)) { + if (jp.nextToken() == START_OBJECT) + parseProperties(jp); + } + continue; + } + if (t == END_OBJECT) + break; + } + + //add tag information + mTileSource.decodeTags(mMapElement, mTagMap); + if (mMapElement.tags.numTags == 0) + return; + + mTileSource.postGeomHook(mMapElement); + + if (mMapElement.type == GeometryType.NONE) + return; + + //process this element + mTileDataSink.process(mMapElement); + } + + private void parseProperties(JsonParser jp) + throws JsonParseException, IOException { + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == FIELD_NAME) { + String text = jp.getCurrentName(); + + t = jp.nextToken(); + if (t == VALUE_STRING) { + mTagMap.put(text, jp.getText()); + } else if (t == VALUE_NUMBER_INT) { + mTagMap.put(text, jp.getNumberValue()); + } + continue; + } + if (t == END_OBJECT) + break; + } + } + + private void parseGeometry(JsonParser jp) + throws JsonParseException, IOException { + + boolean multi = false; + GeometryType type = GeometryType.NONE; + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == FIELD_NAME) { + if (match(jp, FIELD_COORDINATES)) { + if (jp.nextToken() != START_ARRAY) + continue; + if (multi) { + parseMulti(jp, type); + } else { + if (type == GeometryType.POLY) + parsePolygon(jp); + + if (type == GeometryType.LINE) + parseLineString(jp); + + if (type == GeometryType.POINT) + parseCoordinate(jp); + + } + } else if (match(jp, FIELD_TYPE)) { + multi = false; + + jp.nextToken(); + + if (match(jp, LINETRING)) + type = GeometryType.LINE; + else if (match(jp, POLYGON)) + type = GeometryType.POLY; + else if (match(jp, POINT)) + type = GeometryType.POINT; + else if (match(jp, MULTI_LINESTRING)) { + type = GeometryType.LINE; + multi = true; + } + else if (match(jp, MULTI_POLYGON)) { + type = GeometryType.POLY; + multi = true; + } + else if (match(jp, MULTI_POINT)) { + type = GeometryType.POINT; + multi = true; + } + + if (type == GeometryType.POINT) + mMapElement.startPoints(); + } + continue; + } + if (t == END_OBJECT) + break; + } + } + + private void parseMulti(JsonParser jp, GeometryType type) + throws JsonParseException, IOException { + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == END_ARRAY) + break; + + if (t == START_ARRAY) { + if (type == GeometryType.POLY) + parsePolygon(jp); + + else if (type == GeometryType.LINE) + parseLineString(jp); + + else if (type == GeometryType.POINT) + parseCoordinate(jp);; + + } else { + //.... + } + } + } + + private void parsePolygon(JsonParser jp) + throws JsonParseException, IOException { + int ring = 0; + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == START_ARRAY) { + if (ring == 0) + mMapElement.startPolygon(); + else + mMapElement.startHole(); + + ring++; + parseCoordSequence(jp); + removeLastPoint(); + continue; + } + + if (t == END_ARRAY) + break; + } + } + + private void removeLastPoint() { + mMapElement.pointPos -= 2; + mMapElement.index[mMapElement.indexPos] -= 2; + } + + private void parseLineString(JsonParser jp) + throws JsonParseException, IOException { + mMapElement.startLine(); + parseCoordSequence(jp); + } + + private void parseCoordSequence(JsonParser jp) + throws JsonParseException, IOException { + + for (JsonToken t; (t = jp.nextToken()) != null;) { + + if (t == START_ARRAY) { + parseCoordinate(jp); + continue; + } + + if (t == END_ARRAY) + break; + + } + } + + private void parseCoordinate(JsonParser jp) + throws JsonParseException, IOException { + int pos = 0; + double x = 0, y = 0; //, z = 0; + + for (JsonToken t; (t = jp.nextToken()) != null;) { + if (t == VALUE_NUMBER_FLOAT || t == VALUE_NUMBER_INT) { + + // avoid String allocation (by getDouble...) + char[] val = jp.getTextCharacters(); + int offset = jp.getTextOffset(); + int length = jp.getTextLength(); + double c = ArrayUtils.parseNumber(val, offset, offset + length); + + if (pos == 0) + x = c; + if (pos == 1) + y = c; + //if (pos == 2) + //z = c; + + pos++; + continue; + } + + if (t == END_ARRAY) + break; + } + + mMapElement.addPoint((float) ((longitudeToX(x) - mTileX) * mTileScale), + (float) ((latitudeToY(y) - mTileY) * mTileScale)); + + } + + private final static boolean match(JsonParser jp, char[] fieldName) + throws JsonParseException, IOException { + + int length = jp.getTextLength(); + if (length != fieldName.length) + return false; + + char[] val = jp.getTextCharacters(); + int offset = jp.getTextOffset(); + + for (int i = 0; i < length; i++) { + if (fieldName[i] != val[i + offset]) + return false; + } + + return true; + } +} diff --git a/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileSource.java b/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileSource.java index eb83cdd2..3758c1b7 100644 --- a/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileSource.java +++ b/vtm-extras/src/org/oscim/tiling/source/geojson/GeoJsonTileSource.java @@ -1,71 +1,71 @@ -/* - * Copyright 2014 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.tiling.source.geojson; - -import java.util.HashMap; -import java.util.Map; - -import org.oscim.core.MapElement; -import org.oscim.core.Tag; -import org.oscim.tiling.ITileDataSource; -import org.oscim.tiling.source.UrlTileDataSource; -import org.oscim.tiling.source.UrlTileSource; - -public abstract class GeoJsonTileSource extends UrlTileSource { - - public GeoJsonTileSource(String url) { - super(url, "/{Z}/{X}/{Y}.json"); - Map opt = new HashMap(); - opt.put("Accept-Encoding", "gzip"); - setHttpRequestHeaders(opt); - } - - public GeoJsonTileSource(String url, int zoomMin, int zoomMax) { - super(url, "/{Z}/{X}/{Y}.json", zoomMin, zoomMax); - Map opt = new HashMap(); - opt.put("Accept-Encoding", "gzip"); - setHttpRequestHeaders(opt); - } - - @Override - public ITileDataSource getDataSource() { - - return new UrlTileDataSource(this, new GeoJsonTileDecoder(this), getHttpEngine()); - } - - public Tag getFeatureTag() { - return null; - } - - /** allow overriding tag handling */ - public abstract void decodeTags(MapElement mapElement, Map properties); - - public Tag rewriteTag(String key, Object value) { - - if (value == null) - return null; - - String val = (value instanceof String) ? (String) value : String.valueOf(value); - - return new Tag(key, val); - } - - /** modify mapElement before process() */ - public void postGeomHook(MapElement mapElement) { - - } -} +/* + * Copyright 2014 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.tiling.source.geojson; + +import java.util.HashMap; +import java.util.Map; + +import org.oscim.core.MapElement; +import org.oscim.core.Tag; +import org.oscim.tiling.ITileDataSource; +import org.oscim.tiling.source.UrlTileDataSource; +import org.oscim.tiling.source.UrlTileSource; + +public abstract class GeoJsonTileSource extends UrlTileSource { + + public GeoJsonTileSource(String url) { + super(url, "/{Z}/{X}/{Y}.json"); + Map opt = new HashMap(); + opt.put("Accept-Encoding", "gzip"); + setHttpRequestHeaders(opt); + } + + public GeoJsonTileSource(String url, int zoomMin, int zoomMax) { + super(url, "/{Z}/{X}/{Y}.json", zoomMin, zoomMax); + Map opt = new HashMap(); + opt.put("Accept-Encoding", "gzip"); + setHttpRequestHeaders(opt); + } + + @Override + public ITileDataSource getDataSource() { + + return new UrlTileDataSource(this, new GeoJsonTileDecoder(this), getHttpEngine()); + } + + public Tag getFeatureTag() { + return null; + } + + /** allow overriding tag handling */ + public abstract void decodeTags(MapElement mapElement, Map properties); + + public Tag rewriteTag(String key, Object value) { + + if (value == null) + return null; + + String val = (value instanceof String) ? (String) value : String.valueOf(value); + + return new Tag(key, val); + } + + /** modify mapElement before process() */ + public void postGeomHook(MapElement mapElement) { + + } +} diff --git a/vtm-extras/src/org/oscim/utils/Triangulator.java b/vtm-extras/src/org/oscim/utils/Triangulator.java index 01c1b21c..0f9291d0 100644 --- a/vtm-extras/src/org/oscim/utils/Triangulator.java +++ b/vtm-extras/src/org/oscim/utils/Triangulator.java @@ -1,366 +1,366 @@ -package org.oscim.utils; - -import java.util.ArrayList; - -/** - * Triangulates a polygon into triangles - duh. Doesn't handle - * holes in polys - * - * @author Public Source from FlipCode - */ -public class Triangulator { - /** The accepted error value */ - private static final float EPSILON = 0.0000000001f; - /** The list of points to be triangulated */ - private final PointList poly = new PointList(); - /** The list of points describing the triangles */ - private final PointList tris = new PointList(); - /** True if we've tried to triangulate */ - private boolean tried; - - /** - * Create a new triangulator - */ - public Triangulator() { - } - - /** - * Add a point describing the polygon to be triangulated - * - * @param x The x coordinate of the point - * @param y the y coordinate of the point - */ - public void addPolyPoint(float x, float y) { - poly.add(new Point(x, y)); - } - - /** - * Cause the triangulator to split the polygon - * - * @return True if we managed the task - */ - public boolean triangulate() { - tried = true; - - boolean worked = process(poly, tris); - return worked; - } - - /** - * Get a count of the number of triangles produced - * - * @return The number of triangles produced - */ - public int getTriangleCount() { - if (!tried) { - throw new RuntimeException("Call triangulate() before accessing triangles"); - } - return tris.size() / 3; - } - - /** - * Get a point on a specified generated triangle - * - * @param tri The index of the triangle to interegate - * @param i The index of the point within the triangle to retrieve - * (0 - 2) - * @return The x,y coordinate pair for the point - */ - public float[] getTrianglePoint(int tri, int i) { - if (!tried) { - throw new RuntimeException("Call triangulate() before accessing triangles"); - } - return tris.get((tri * 3) + i).toArray(); - } - - /** - * Find the area of a polygon defined by the series of points - * in the list - * - * @param contour The list of points defined the contour of the polygon - * (Vector2f) - * @return The area of the polygon defined - */ - private static float area(PointList contour) { - int n = contour.size(); - - float A = 0.0f; - - for (int p = n - 1, q = 0; q < n; p = q++) { - Point contourP = contour.get(p); - Point contourQ = contour.get(q); - - A += contourP.getX() * contourQ.getY() - contourQ.getX() - * contourP.getY(); - } - return A * 0.5f; - } - - /** - * Check if the point P is inside the triangle defined by - * the points A,B,C - * - * @param Ax Point A x-coordinate - * @param Ay Point A y-coordinate - * @param Bx Point B x-coordinate - * @param By Point B y-coordinate - * @param Cx Point C x-coordinate - * @param Cy Point C y-coordinate - * @param Px Point P x-coordinate - * @param Py Point P y-coordinate - * @return True if the point specified is within the triangle - */ - private static boolean insideTriangle(float Ax, float Ay, float Bx, - float By, float Cx, float Cy, float Px, float Py) { - float ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy; - float cCROSSap, bCROSScp, aCROSSbp; - - ax = Cx - Bx; - ay = Cy - By; - bx = Ax - Cx; - by = Ay - Cy; - cx = Bx - Ax; - cy = By - Ay; - apx = Px - Ax; - apy = Py - Ay; - bpx = Px - Bx; - bpy = Py - By; - cpx = Px - Cx; - cpy = Py - Cy; - - aCROSSbp = ax * bpy - ay * bpx; - cCROSSap = cx * apy - cy * apx; - bCROSScp = bx * cpy - by * cpx; - - return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f)); - } - - /** - * Cut a the contour and add a triangle into V to describe the - * location of the cut - * - * @param contour The list of points defining the polygon - * @param u The index of the first point - * @param v The index of the second point - * @param w The index of the third point - * @param n ? - * @param V The array to populate with indicies of triangles - * @return True if a triangle was found - */ - private static boolean snip(PointList contour, int u, int v, int w, int n, - int[] V) { - int p; - float Ax, Ay, Bx, By, Cx, Cy, Px, Py; - - Ax = contour.get(V[u]).getX(); - Ay = contour.get(V[u]).getY(); - - Bx = contour.get(V[v]).getX(); - By = contour.get(V[v]).getY(); - - Cx = contour.get(V[w]).getX(); - Cy = contour.get(V[w]).getY(); - - if (EPSILON > (((Bx - Ax) * (Cy - Ay)) - ((By - Ay) * (Cx - Ax)))) { - return false; - } - - for (p = 0; p < n; p++) { - if ((p == u) || (p == v) || (p == w)) { - continue; - } - - Px = contour.get(V[p]).getX(); - Py = contour.get(V[p]).getY(); - - if (insideTriangle(Ax, Ay, Bx, By, Cx, Cy, Px, Py)) { - return false; - } - } - - return true; - } - - /** - * Process a list of points defining a polygon - * - * @param contour The list of points describing the polygon - * @param result The list of points describing the triangles. Groups - * of 3 describe each triangle - * @return True if we succeeded in completing triangulation - */ - private static boolean process(PointList contour, PointList result) { - /* allocate and initialize list of Vertices in polygon */ - - int n = contour.size(); - if (n < 3) - return false; - - int[] V = new int[n]; - - /* we want a counter-clockwise polygon in V */ - - if (0.0f < area(contour)) { - for (int v = 0; v < n; v++) - V[v] = v; - } else { - for (int v = 0; v < n; v++) - V[v] = (n - 1) - v; - } - - int nv = n; - - /* remove nv-2 Vertices, creating 1 triangle every time */ - int count = 2 * nv; /* error detection */ - - //for (int m = 0, v = nv - 1; nv > 2;) { - for (int v = nv - 1; nv > 2;) { - /* if we loop, it is probably a non-simple polygon */ - if (0 >= (count--)) { - //** Triangulate: ERROR - probable bad polygon! - return false; - } - - /* three consecutive vertices in current polygon, */ - int u = v; - if (nv <= u) - u = 0; /* previous */ - v = u + 1; - if (nv <= v) - v = 0; /* new v */ - int w = v + 1; - if (nv <= w) - w = 0; /* next */ - - if (snip(contour, u, v, w, nv, V)) { - int a, b, c, s, t; - - /* true names of the vertices */ - a = V[u]; - b = V[v]; - c = V[w]; - - /* output Triangle */ - result.add(contour.get(a)); - result.add(contour.get(b)); - result.add(contour.get(c)); - - //m++; - - /* remove v from remaining polygon */ - for (s = v, t = v + 1; t < nv; s++, t++) { - V[s] = V[t]; - } - nv--; - - /* resest error detection counter */ - count = 2 * nv; - } - } - - return true; - } - - /** - * A single point handled by the triangulator - * - * @author Kevin Glass - */ - private class Point { - /** The x coorindate of this point */ - private final float x; - /** The y coorindate of this point */ - private final float y; - - /** - * Create a new point - * - * @param x The x coordindate of the point - * @param y The y coordindate of the point - */ - public Point(float x, float y) { - this.x = x; - this.y = y; - } - - /** - * Get the x coordinate of the point - * - * @return The x coordinate of the point - */ - public float getX() { - return x; - } - - /** - * Get the y coordinate of the point - * - * @return The y coordinate of the point - */ - public float getY() { - return y; - } - - /** - * Convert this point into a float array - * - * @return The contents of this point as a float array - */ - public float[] toArray() { - return new float[] { x, y }; - } - } - - /** - * A list of type Point - * - * @author Kevin Glass - */ - private class PointList { - /** The list of points */ - private final ArrayList points = new ArrayList(); - - /** - * Create a new empty list - */ - public PointList() { - } - - /** - * Add a point to the list - * - * @param point The point to add - */ - public void add(Point point) { - points.add(point); - } - - ///** - // * Remove a point from the list - // * - // * @param point The point to remove - // */ - //public void remove(Point point) { - // points.remove(point); - //} - - /** - * Get the size of the list - * - * @return The size of the list - */ - public int size() { - return points.size(); - } - - /** - * Get a point a specific index in the list - * - * @param i The index of the point to retrieve - * @return The point - */ - public Point get(int i) { - return points.get(i); - } - } -} +package org.oscim.utils; + +import java.util.ArrayList; + +/** + * Triangulates a polygon into triangles - duh. Doesn't handle + * holes in polys + * + * @author Public Source from FlipCode + */ +public class Triangulator { + /** The accepted error value */ + private static final float EPSILON = 0.0000000001f; + /** The list of points to be triangulated */ + private final PointList poly = new PointList(); + /** The list of points describing the triangles */ + private final PointList tris = new PointList(); + /** True if we've tried to triangulate */ + private boolean tried; + + /** + * Create a new triangulator + */ + public Triangulator() { + } + + /** + * Add a point describing the polygon to be triangulated + * + * @param x The x coordinate of the point + * @param y the y coordinate of the point + */ + public void addPolyPoint(float x, float y) { + poly.add(new Point(x, y)); + } + + /** + * Cause the triangulator to split the polygon + * + * @return True if we managed the task + */ + public boolean triangulate() { + tried = true; + + boolean worked = process(poly, tris); + return worked; + } + + /** + * Get a count of the number of triangles produced + * + * @return The number of triangles produced + */ + public int getTriangleCount() { + if (!tried) { + throw new RuntimeException("Call triangulate() before accessing triangles"); + } + return tris.size() / 3; + } + + /** + * Get a point on a specified generated triangle + * + * @param tri The index of the triangle to interegate + * @param i The index of the point within the triangle to retrieve + * (0 - 2) + * @return The x,y coordinate pair for the point + */ + public float[] getTrianglePoint(int tri, int i) { + if (!tried) { + throw new RuntimeException("Call triangulate() before accessing triangles"); + } + return tris.get((tri * 3) + i).toArray(); + } + + /** + * Find the area of a polygon defined by the series of points + * in the list + * + * @param contour The list of points defined the contour of the polygon + * (Vector2f) + * @return The area of the polygon defined + */ + private static float area(PointList contour) { + int n = contour.size(); + + float A = 0.0f; + + for (int p = n - 1, q = 0; q < n; p = q++) { + Point contourP = contour.get(p); + Point contourQ = contour.get(q); + + A += contourP.getX() * contourQ.getY() - contourQ.getX() + * contourP.getY(); + } + return A * 0.5f; + } + + /** + * Check if the point P is inside the triangle defined by + * the points A,B,C + * + * @param Ax Point A x-coordinate + * @param Ay Point A y-coordinate + * @param Bx Point B x-coordinate + * @param By Point B y-coordinate + * @param Cx Point C x-coordinate + * @param Cy Point C y-coordinate + * @param Px Point P x-coordinate + * @param Py Point P y-coordinate + * @return True if the point specified is within the triangle + */ + private static boolean insideTriangle(float Ax, float Ay, float Bx, + float By, float Cx, float Cy, float Px, float Py) { + float ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy; + float cCROSSap, bCROSScp, aCROSSbp; + + ax = Cx - Bx; + ay = Cy - By; + bx = Ax - Cx; + by = Ay - Cy; + cx = Bx - Ax; + cy = By - Ay; + apx = Px - Ax; + apy = Py - Ay; + bpx = Px - Bx; + bpy = Py - By; + cpx = Px - Cx; + cpy = Py - Cy; + + aCROSSbp = ax * bpy - ay * bpx; + cCROSSap = cx * apy - cy * apx; + bCROSScp = bx * cpy - by * cpx; + + return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f)); + } + + /** + * Cut a the contour and add a triangle into V to describe the + * location of the cut + * + * @param contour The list of points defining the polygon + * @param u The index of the first point + * @param v The index of the second point + * @param w The index of the third point + * @param n ? + * @param V The array to populate with indicies of triangles + * @return True if a triangle was found + */ + private static boolean snip(PointList contour, int u, int v, int w, int n, + int[] V) { + int p; + float Ax, Ay, Bx, By, Cx, Cy, Px, Py; + + Ax = contour.get(V[u]).getX(); + Ay = contour.get(V[u]).getY(); + + Bx = contour.get(V[v]).getX(); + By = contour.get(V[v]).getY(); + + Cx = contour.get(V[w]).getX(); + Cy = contour.get(V[w]).getY(); + + if (EPSILON > (((Bx - Ax) * (Cy - Ay)) - ((By - Ay) * (Cx - Ax)))) { + return false; + } + + for (p = 0; p < n; p++) { + if ((p == u) || (p == v) || (p == w)) { + continue; + } + + Px = contour.get(V[p]).getX(); + Py = contour.get(V[p]).getY(); + + if (insideTriangle(Ax, Ay, Bx, By, Cx, Cy, Px, Py)) { + return false; + } + } + + return true; + } + + /** + * Process a list of points defining a polygon + * + * @param contour The list of points describing the polygon + * @param result The list of points describing the triangles. Groups + * of 3 describe each triangle + * @return True if we succeeded in completing triangulation + */ + private static boolean process(PointList contour, PointList result) { + /* allocate and initialize list of Vertices in polygon */ + + int n = contour.size(); + if (n < 3) + return false; + + int[] V = new int[n]; + + /* we want a counter-clockwise polygon in V */ + + if (0.0f < area(contour)) { + for (int v = 0; v < n; v++) + V[v] = v; + } else { + for (int v = 0; v < n; v++) + V[v] = (n - 1) - v; + } + + int nv = n; + + /* remove nv-2 Vertices, creating 1 triangle every time */ + int count = 2 * nv; /* error detection */ + + //for (int m = 0, v = nv - 1; nv > 2;) { + for (int v = nv - 1; nv > 2;) { + /* if we loop, it is probably a non-simple polygon */ + if (0 >= (count--)) { + //** Triangulate: ERROR - probable bad polygon! + return false; + } + + /* three consecutive vertices in current polygon, */ + int u = v; + if (nv <= u) + u = 0; /* previous */ + v = u + 1; + if (nv <= v) + v = 0; /* new v */ + int w = v + 1; + if (nv <= w) + w = 0; /* next */ + + if (snip(contour, u, v, w, nv, V)) { + int a, b, c, s, t; + + /* true names of the vertices */ + a = V[u]; + b = V[v]; + c = V[w]; + + /* output Triangle */ + result.add(contour.get(a)); + result.add(contour.get(b)); + result.add(contour.get(c)); + + //m++; + + /* remove v from remaining polygon */ + for (s = v, t = v + 1; t < nv; s++, t++) { + V[s] = V[t]; + } + nv--; + + /* resest error detection counter */ + count = 2 * nv; + } + } + + return true; + } + + /** + * A single point handled by the triangulator + * + * @author Kevin Glass + */ + private class Point { + /** The x coorindate of this point */ + private final float x; + /** The y coorindate of this point */ + private final float y; + + /** + * Create a new point + * + * @param x The x coordindate of the point + * @param y The y coordindate of the point + */ + public Point(float x, float y) { + this.x = x; + this.y = y; + } + + /** + * Get the x coordinate of the point + * + * @return The x coordinate of the point + */ + public float getX() { + return x; + } + + /** + * Get the y coordinate of the point + * + * @return The y coordinate of the point + */ + public float getY() { + return y; + } + + /** + * Convert this point into a float array + * + * @return The contents of this point as a float array + */ + public float[] toArray() { + return new float[] { x, y }; + } + } + + /** + * A list of type Point + * + * @author Kevin Glass + */ + private class PointList { + /** The list of points */ + private final ArrayList points = new ArrayList(); + + /** + * Create a new empty list + */ + public PointList() { + } + + /** + * Add a point to the list + * + * @param point The point to add + */ + public void add(Point point) { + points.add(point); + } + + ///** + // * Remove a point from the list + // * + // * @param point The point to remove + // */ + //public void remove(Point point) { + // points.remove(point); + //} + + /** + * Get the size of the list + * + * @return The size of the list + */ + public int size() { + return points.size(); + } + + /** + * Get a point a specific index in the list + * + * @param i The index of the point to retrieve + * @return The point + */ + public Point get(int i) { + return points.get(i); + } + } +} diff --git a/vtm-gdx/src/VtmGdx.gwt.xml b/vtm-gdx/src/VtmGdx.gwt.xml index 8adef5ef..787f3b3d 100644 --- a/vtm-gdx/src/VtmGdx.gwt.xml +++ b/vtm-gdx/src/VtmGdx.gwt.xml @@ -1,5 +1,5 @@ - - - - + + + + \ No newline at end of file diff --git a/vtm-gdx/src/org/oscim/gdx/GdxMap.java b/vtm-gdx/src/org/oscim/gdx/GdxMap.java index 288d8408..89922df9 100644 --- a/vtm-gdx/src/org/oscim/gdx/GdxMap.java +++ b/vtm-gdx/src/org/oscim/gdx/GdxMap.java @@ -1,214 +1,214 @@ -/* - * Copyright 2013 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.gdx; - -import org.oscim.layers.TileGridLayer; -import org.oscim.layers.tile.buildings.BuildingLayer; -import org.oscim.layers.tile.vector.VectorTileLayer; -import org.oscim.layers.tile.vector.labeling.LabelLayer; -import org.oscim.map.Layers; -import org.oscim.map.Map; -import org.oscim.renderer.MapRenderer; -import org.oscim.theme.VtmThemes; -import org.oscim.tiling.TileSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.badlogic.gdx.Application; -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.InputMultiplexer; -import com.badlogic.gdx.utils.Timer; -import com.badlogic.gdx.utils.Timer.Task; - -public abstract class GdxMap implements ApplicationListener { - final static Logger log = LoggerFactory.getLogger(GdxMap.class); - - protected Map mMap; - - VectorTileLayer mMapLayer; - private MapRenderer mMapRenderer; - - public GdxMap() { - } - - protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels, - boolean buildings) { - Layers layers = mMap.layers(); - - if (tileSource != null) { - mMapLayer = mMap.setBaseMap(tileSource); - mMap.setTheme(VtmThemes.DEFAULT); - - if (buildings) - layers.add(new BuildingLayer(mMap, mMapLayer)); - - if (labels) - layers.add(new LabelLayer(mMap, mMapLayer)); - } - - if (tileGrid) - layers.add(new TileGridLayer(mMap)); - } - - @Override - public void create() { - mMap = new MapAdapter(); - mMapRenderer = new MapRenderer(mMap); - - Gdx.graphics.setContinuousRendering(false); - Gdx.app.setLogLevel(Application.LOG_DEBUG); - - int w = Gdx.graphics.getWidth(); - int h = Gdx.graphics.getHeight(); - - mMap.viewport().setScreenSize(w, h); - mMapRenderer.onSurfaceCreated(); - mMapRenderer.onSurfaceChanged(w, h); - - InputMultiplexer mux = new InputMultiplexer(); - mux.addProcessor(new InputHandler(this)); - //mux.addProcessor(new GestureDetector(20, 0.5f, 2, 0.05f, - // new MapController(mMap))); - mux.addProcessor(new MotionHandler(mMap)); - - Gdx.input.setInputProcessor(mux); - - createLayers(); - } - - protected void createLayers() { - mMap.layers().add(new TileGridLayer(mMap)); - } - - @Override - public void dispose() { - - } - - /* private */boolean mRenderWait; - /* private */boolean mRenderRequest; - /* private */boolean mUpdateRequest; - - @Override - public void render() { - if (!mRenderRequest) - return; - - mMapRenderer.onDrawFrame(); - } - - @Override - public void resize(int w, int h) { - mMap.viewport().setScreenSize(w, h); - mMapRenderer.onSurfaceChanged(w, h); - mMap.render(); - } - - @Override - public void pause() { - } - - @Override - public void resume() { - } - - protected boolean onKeyDown(int keycode) { - return false; - } - - public Map getMap() { - return mMap; - } - - class MapAdapter extends Map { - - @Override - public int getWidth() { - return Gdx.graphics.getWidth(); - } - - @Override - public int getHeight() { - return Gdx.graphics.getHeight(); - } - - private final Runnable mRedrawCb = new Runnable() { - @Override - public void run() { - prepareFrame(); - Gdx.graphics.requestRendering(); - } - }; - - @Override - public void updateMap(boolean forceRender) { - synchronized (mRedrawCb) { - if (!mRenderRequest) { - mRenderRequest = true; - Gdx.app.postRunnable(mRedrawCb); - } else { - mRenderWait = true; - } - } - } - - @Override - public void render() { - synchronized (mRedrawCb) { - mRenderRequest = true; - if (mClearMap) - updateMap(false); - else { - Gdx.graphics.requestRendering(); - } - } - } - - @Override - public boolean post(Runnable runnable) { - Gdx.app.postRunnable(runnable); - return true; - } - - @Override - public boolean postDelayed(final Runnable action, long delay) { - Timer.schedule(new Task() { - @Override - public void run() { - action.run(); - } - }, delay / 1000f); - return true; - } - - @Override - public void beginFrame() { - } - - @Override - public void doneFrame(boolean animate) { - synchronized (mRedrawCb) { - mRenderRequest = false; - if (animate || mRenderWait) { - mRenderWait = false; - updateMap(true); - } - } - } - } -} +/* + * Copyright 2013 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.gdx; + +import org.oscim.layers.TileGridLayer; +import org.oscim.layers.tile.buildings.BuildingLayer; +import org.oscim.layers.tile.vector.VectorTileLayer; +import org.oscim.layers.tile.vector.labeling.LabelLayer; +import org.oscim.map.Layers; +import org.oscim.map.Map; +import org.oscim.renderer.MapRenderer; +import org.oscim.theme.VtmThemes; +import org.oscim.tiling.TileSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.badlogic.gdx.Application; +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.InputMultiplexer; +import com.badlogic.gdx.utils.Timer; +import com.badlogic.gdx.utils.Timer.Task; + +public abstract class GdxMap implements ApplicationListener { + final static Logger log = LoggerFactory.getLogger(GdxMap.class); + + protected Map mMap; + + VectorTileLayer mMapLayer; + private MapRenderer mMapRenderer; + + public GdxMap() { + } + + protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels, + boolean buildings) { + Layers layers = mMap.layers(); + + if (tileSource != null) { + mMapLayer = mMap.setBaseMap(tileSource); + mMap.setTheme(VtmThemes.DEFAULT); + + if (buildings) + layers.add(new BuildingLayer(mMap, mMapLayer)); + + if (labels) + layers.add(new LabelLayer(mMap, mMapLayer)); + } + + if (tileGrid) + layers.add(new TileGridLayer(mMap)); + } + + @Override + public void create() { + mMap = new MapAdapter(); + mMapRenderer = new MapRenderer(mMap); + + Gdx.graphics.setContinuousRendering(false); + Gdx.app.setLogLevel(Application.LOG_DEBUG); + + int w = Gdx.graphics.getWidth(); + int h = Gdx.graphics.getHeight(); + + mMap.viewport().setScreenSize(w, h); + mMapRenderer.onSurfaceCreated(); + mMapRenderer.onSurfaceChanged(w, h); + + InputMultiplexer mux = new InputMultiplexer(); + mux.addProcessor(new InputHandler(this)); + //mux.addProcessor(new GestureDetector(20, 0.5f, 2, 0.05f, + // new MapController(mMap))); + mux.addProcessor(new MotionHandler(mMap)); + + Gdx.input.setInputProcessor(mux); + + createLayers(); + } + + protected void createLayers() { + mMap.layers().add(new TileGridLayer(mMap)); + } + + @Override + public void dispose() { + + } + + /* private */boolean mRenderWait; + /* private */boolean mRenderRequest; + /* private */boolean mUpdateRequest; + + @Override + public void render() { + if (!mRenderRequest) + return; + + mMapRenderer.onDrawFrame(); + } + + @Override + public void resize(int w, int h) { + mMap.viewport().setScreenSize(w, h); + mMapRenderer.onSurfaceChanged(w, h); + mMap.render(); + } + + @Override + public void pause() { + } + + @Override + public void resume() { + } + + protected boolean onKeyDown(int keycode) { + return false; + } + + public Map getMap() { + return mMap; + } + + class MapAdapter extends Map { + + @Override + public int getWidth() { + return Gdx.graphics.getWidth(); + } + + @Override + public int getHeight() { + return Gdx.graphics.getHeight(); + } + + private final Runnable mRedrawCb = new Runnable() { + @Override + public void run() { + prepareFrame(); + Gdx.graphics.requestRendering(); + } + }; + + @Override + public void updateMap(boolean forceRender) { + synchronized (mRedrawCb) { + if (!mRenderRequest) { + mRenderRequest = true; + Gdx.app.postRunnable(mRedrawCb); + } else { + mRenderWait = true; + } + } + } + + @Override + public void render() { + synchronized (mRedrawCb) { + mRenderRequest = true; + if (mClearMap) + updateMap(false); + else { + Gdx.graphics.requestRendering(); + } + } + } + + @Override + public boolean post(Runnable runnable) { + Gdx.app.postRunnable(runnable); + return true; + } + + @Override + public boolean postDelayed(final Runnable action, long delay) { + Timer.schedule(new Task() { + @Override + public void run() { + action.run(); + } + }, delay / 1000f); + return true; + } + + @Override + public void beginFrame() { + } + + @Override + public void doneFrame(boolean animate) { + synchronized (mRedrawCb) { + mRenderRequest = false; + if (animate || mRenderWait) { + mRenderWait = false; + updateMap(true); + } + } + } + } +} diff --git a/vtm-ios/src/org/oscim/ios/IOSMapApp.java b/vtm-ios/src/org/oscim/ios/IOSMapApp.java index 4a232a1a..f17151ac 100644 --- a/vtm-ios/src/org/oscim/ios/IOSMapApp.java +++ b/vtm-ios/src/org/oscim/ios/IOSMapApp.java @@ -1,37 +1,37 @@ -/* - * Copyright 2013 Hannes Janetzek - * Copyright 2016 Longri - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.ios; - - -import org.oscim.backend.GLAdapter; -import org.oscim.gdx.GdxAssets; -import org.oscim.gdx.GdxMap; -import org.oscim.ios.backend.IosGL; -import org.oscim.ios.backend.IosGraphics; - - -public class IOSMapApp extends GdxMap { - - public static void init() { - - // init globals - IosGraphics.init(); - GdxAssets.init("assets/"); - GLAdapter.init(new IosGL()); - } -} +/* + * Copyright 2013 Hannes Janetzek + * Copyright 2016 Longri + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.ios; + + +import org.oscim.backend.GLAdapter; +import org.oscim.gdx.GdxAssets; +import org.oscim.gdx.GdxMap; +import org.oscim.ios.backend.IosGL; +import org.oscim.ios.backend.IosGraphics; + + +public class IOSMapApp extends GdxMap { + + public static void init() { + + // init globals + IosGraphics.init(); + GdxAssets.init("assets/"); + GLAdapter.init(new IosGL()); + } +} diff --git a/vtm-playground/data/g3d/test.g3dj b/vtm-playground/data/g3d/test.g3dj index 997a15bd..143395e3 100644 --- a/vtm-playground/data/g3d/test.g3dj +++ b/vtm-playground/data/g3d/test.g3dj @@ -1,4748 +1,4748 @@ -{ - "version": [ 0, 1], - "id": "", - "meshes": [ - { - "attributes": ["POSITION"], - "vertices": [ - -44.509998, 15.000000, -48.078999, - -44.509998, 0.000000, -48.078999, - -43.915001, 15.000000, -52.787998, - -43.915001, 0.000000, -52.787998, - -41.426998, 15.000000, -54.946999, - -41.426998, 0.000000, -54.946999, - -39.555000, 15.000000, -52.331001, - -39.555000, 0.000000, -52.331001, - -27.945999, 15.000000, -62.484001, - -27.945999, 0.000000, -62.484001, - -27.465000, 15.000000, -65.924004, - -27.465000, 0.000000, -65.924004, - -25.465000, 15.000000, -67.649002, - -25.465000, 0.000000, -67.649002, - -35.355000, 15.000000, -80.039001, - -35.355000, 0.000000, -80.039001, - -38.505001, 15.000000, -80.440002, - -38.505001, 0.000000, -80.440002, - -74.762001, 15.000000, -84.570000, - -74.762001, 0.000000, -84.570000, - -75.042999, 15.000000, -82.355003, - -75.042999, 0.000000, -82.355003, - -139.567001, 15.000000, -81.752998, - -139.567001, 0.000000, -81.752998, - -144.876007, 15.000000, -67.615997, - -144.876007, 0.000000, -67.615997, - -150.720993, 15.000000, -56.105000, - -150.720993, 0.000000, -56.105000, - -156.759003, 15.000000, -44.205002, - -156.759003, 0.000000, -44.205002, - -158.550995, 15.000000, -46.576000, - -158.550995, 0.000000, -46.576000, - -160.832001, 15.000000, -41.756001, - -160.832001, 0.000000, -41.756001, - -179.602005, 15.000000, -2.182000, - -179.602005, 0.000000, -2.182000, - -152.699997, 15.000000, 8.160000, - -152.699997, 0.000000, 8.160000, - -150.587006, 15.000000, 2.984000, - -150.587006, 0.000000, 2.984000, - -148.065994, 15.000000, 3.930000, - -148.065994, 0.000000, 3.930000, - -150.292999, 15.000000, 9.084000, - -150.292999, 0.000000, 9.084000, - -144.227997, 15.000000, 11.388000, - -144.227997, 0.000000, 11.388000, - -137.654007, 15.000000, 13.893000, - -137.654007, 0.000000, 13.893000, - -137.279999, 15.000000, 13.013000, - -137.279999, 0.000000, 13.013000, - -136.136002, 15.000000, 14.238000, - -136.136002, 0.000000, 14.238000, - -134.585007, 15.000000, 15.095000, - -134.585007, 0.000000, 15.095000, - -132.806000, 15.000000, 15.496000, - -132.806000, 0.000000, 15.496000, - -130.725998, 15.000000, 15.507000, - -130.725998, 0.000000, 15.507000, - -129.362000, 15.000000, 15.173000, - -129.362000, 0.000000, 15.173000, - -127.764000, 15.000000, 14.483000, - -127.764000, 0.000000, 14.483000, - -126.607002, 15.000000, 13.693000, - -126.607002, 0.000000, 13.693000, - -125.651001, 15.000000, 12.590000, - -125.651001, 0.000000, 12.590000, - -125.102997, 15.000000, 11.399000, - -125.102997, 0.000000, 11.399000, - -124.420998, 15.000000, 12.023000, - -124.420998, 0.000000, 12.023000, - -90.463997, 15.000000, -14.816000, - -90.463997, 0.000000, -14.816000, - -90.189003, 15.000000, -14.416000, - -90.189003, 0.000000, -14.416000, - -82.660004, 15.000000, -20.271000, - -82.660004, 0.000000, -20.271000, - -84.825996, 15.000000, -22.931999, - -84.825996, 0.000000, -22.931999, - -79.911003, 15.000000, -26.705000, - -79.911003, 0.000000, -26.705000, - -75.846001, 15.000000, -26.049000, - -75.846001, 0.000000, -26.049000, - -74.348000, 15.000000, -23.677000, - -74.348000, 0.000000, -23.677000, - -62.124001, 15.000000, -33.741001, - -62.124001, 0.000000, -33.741001, - -61.467999, 15.000000, -38.426998, - -61.467999, 0.000000, -38.426998, - -59.061001, 15.000000, -40.554001, - -59.061001, 0.000000, -40.554001, - -57.127998, 15.000000, -37.915001, - -57.127998, 0.000000, -37.915001, - -158.798996, 27.000000, 128.639008, - -158.798996, 0.000000, 128.639008, - -158.457993, 27.000000, 128.115997, - -158.457993, 0.000000, 128.115997, - -175.410004, 27.000000, 116.528000, - -175.410004, 0.000000, 116.528000, - -188.804001, 27.000000, 136.298004, - -188.804001, 0.000000, 136.298004, - -172.761002, 27.000000, 147.139999, - -172.761002, 0.000000, 147.139999, - -167.011002, 27.000000, 139.380997, - -167.011002, 0.000000, 139.380997, - -170.013000, 27.000000, 137.367004, - -170.013000, 0.000000, 137.367004, - -167.345001, 27.000000, 133.192001, - -167.345001, 0.000000, 133.192001, - -164.195007, 27.000000, 135.417999, - -164.195007, 0.000000, 135.417999, - -108.244003, 10.000000, 115.526001, - -108.244003, 0.000000, 115.526001, - -119.900002, 10.000000, 132.623993, - -119.900002, 0.000000, 132.623993, - -124.133003, 10.000000, 138.925003, - -124.133003, 0.000000, 138.925003, - -107.628998, 10.000000, 150.001007, - -107.628998, 0.000000, 150.001007, - -93.559998, 10.000000, 159.440002, - -93.559998, 0.000000, 159.440002, - -82.981003, 10.000000, 139.481995, - -82.981003, 0.000000, 139.481995, - 27.530001, 20.000000, 83.933998, - 27.530001, 0.000000, 83.933998, - 38.791000, 20.000000, 91.336998, - 38.791000, 0.000000, 91.336998, - 49.911999, 20.000000, 99.563004, - 49.911999, 0.000000, 99.563004, - 63.660000, 20.000000, 111.796997, - 63.660000, 0.000000, 111.796997, - 74.139000, 20.000000, 121.860001, - 74.139000, 0.000000, 121.860001, - 102.873001, 20.000000, 91.805000, - 102.873001, 0.000000, 91.805000, - 105.086998, 20.000000, 81.485001, - 105.086998, 0.000000, 81.485001, - 89.098000, 20.000000, 65.856003, - 89.098000, 0.000000, 65.856003, - 55.255001, 20.000000, 49.091999, - 55.255001, 0.000000, 49.091999, - 47.458000, 20.000000, 50.283001, - 47.458000, 0.000000, 50.283001, - -15.889000, 29.500000, -22.754000, - -15.889000, 0.000000, -22.754000, - -7.784000, 29.500000, -18.846001, - -7.784000, 0.000000, -18.846001, - 0.635000, 29.500000, -20.983999, - 0.635000, 0.000000, -20.983999, - 5.837000, 29.500000, -28.063000, - 5.837000, 0.000000, -28.063000, - 5.202000, 29.500000, -37.103001, - 5.202000, 0.000000, -37.103001, - -0.977000, 29.500000, -43.391998, - -0.977000, 0.000000, -43.391998, - -9.871000, 29.500000, -44.237999, - -9.871000, 0.000000, -44.237999, - -16.959000, 29.500000, -39.439999, - -16.959000, 0.000000, -39.439999, - -19.433001, 29.500000, -30.346001, - -19.433001, 0.000000, -30.346001, - 1.350000, 24.500000, -5.187000, - 1.350000, 0.000000, -5.187000, - 26.280001, 24.500000, 4.119000, - 26.280001, 0.000000, 4.119000, - 26.500000, 24.500000, 3.652000, - 26.500000, 0.000000, 3.652000, - 41.431999, 24.500000, -26.459999, - 41.431999, 0.000000, -26.459999, - 51.991001, 24.500000, -51.662998, - 51.991001, 0.000000, -51.662998, - 21.504999, 24.500000, -63.831001, - 21.504999, 0.000000, -63.831001, - -3.404000, 24.500000, -49.848999, - -3.404000, 0.000000, -49.848999, - -9.750000, 24.500000, -44.883999, - -9.750000, 0.000000, -44.883999, - -10.747000, 24.500000, -46.174999, - -10.747000, 0.000000, -46.174999, - -12.693000, 24.500000, -48.702000, - -12.693000, 0.000000, -48.702000, - -27.157000, 24.500000, -37.470001, - -27.157000, 0.000000, -37.470001, - -25.111000, 24.500000, -34.854000, - -25.111000, 0.000000, -34.854000, - -24.141001, 24.500000, -33.606998, - -24.141001, 0.000000, -33.606998, - -55.362999, 24.500000, -9.161000, - -55.362999, 0.000000, -9.161000, - -50.681999, 24.500000, -3.017000, - -50.681999, 0.000000, -3.017000, - -21.212000, 24.500000, 10.876000, - -21.212000, 0.000000, 10.876000, - -9.824000, 24.500000, 1.425000, - -9.824000, 0.000000, 1.425000, - -10.954000, 24.500000, -2.716000, - -10.954000, 0.000000, -2.716000, - -7.691000, 24.500000, -4.753000, - -7.691000, 0.000000, -4.753000, - -4.815000, 24.500000, -7.280000, - -4.815000, 0.000000, -7.280000, - -15.889000, 24.500000, -22.754000, - -19.433001, 24.500000, -30.346001, - -16.959000, 24.500000, -39.439999, - -9.871000, 24.500000, -44.237999, - -0.977000, 24.500000, -43.391998, - 5.202000, 24.500000, -37.103001, - 5.837000, 24.500000, -28.063000, - 0.635000, 24.500000, -20.983999, - -7.784000, 24.500000, -18.846001, - 159.667007, 10.000000, -8.349000, - 159.667007, 0.000000, -8.349000, - 164.889008, 10.000000, -15.674000, - 164.889008, 0.000000, -15.674000, - 165.330994, 10.000000, -16.275000, - 165.330994, 0.000000, -16.275000, - 164.307999, 10.000000, -16.976000, - 164.307999, 0.000000, -16.976000, - 165.604996, 10.000000, -18.934999, - 165.604996, 0.000000, -18.934999, - 166.701996, 10.000000, -18.267000, - 166.701996, 0.000000, -18.267000, - 170.921005, 10.000000, -24.212000, - 170.921005, 0.000000, -24.212000, - 168.641006, 10.000000, -24.802000, - 168.641006, 0.000000, -24.802000, - 166.005997, 10.000000, -25.481001, - 166.005997, 0.000000, -25.481001, - 155.675003, 10.000000, -11.699000, - 155.675003, 0.000000, -11.699000, - 157.681000, 10.000000, -10.019000, - 157.681000, 0.000000, -10.019000, - -162.149002, 15.000000, -42.457001, - -162.149002, 0.000000, -42.457001, - -152.927994, 15.000000, -57.273998, - -152.927994, 0.000000, -57.273998, - -155.468994, 15.000000, -58.620998, - -155.468994, 0.000000, -58.620998, - -146.869003, 15.000000, -74.405998, - -146.869003, 0.000000, -74.405998, - -151.496994, 15.000000, -76.944000, - -151.496994, 0.000000, -76.944000, - -155.194000, 15.000000, -78.982002, - -155.194000, 0.000000, -78.982002, - -170.087006, 15.000000, -73.626999, - -170.087006, 0.000000, -73.626999, - -184.764999, 15.000000, -66.792000, - -184.764999, 0.000000, -66.792000, - -187.132004, 15.000000, -65.690002, - -187.132004, 0.000000, -65.690002, - -199.376007, 15.000000, -58.499001, - -199.376007, 0.000000, -58.499001, - -187.626999, 15.000000, -48.324001, - -187.626999, 0.000000, -48.324001, - -167.231003, 15.000000, -36.847000, - -167.231003, 0.000000, -36.847000, - -163.848007, 15.000000, -43.415001, - -163.848007, 0.000000, -43.415001, - -69.639999, 7.500000, -94.532997, - -69.639999, 0.000000, -94.532997, - -61.054001, 7.500000, -93.910004, - -61.054001, 0.000000, -93.910004, - -60.036999, 7.500000, -104.318001, - -60.036999, 0.000000, -104.318001, - -69.057999, 7.500000, -104.852997, - -69.057999, 0.000000, -104.852997, - -71.170998, 7.500000, -104.974998, - -71.170998, 0.000000, -104.974998, - -93.044998, 7.500000, -106.266998, - -93.044998, 0.000000, -106.266998, - -94.676003, 7.500000, -106.366997, - -94.676003, 0.000000, -106.366997, - -94.556000, 7.500000, -96.314003, - -94.556000, 0.000000, -96.314003, - -152.199005, 10.000000, -187.910995, - -152.199005, 0.000000, -187.910995, - -157.160004, 10.000000, -181.520996, - -157.160004, 0.000000, -181.520996, - -142.154999, 10.000000, -169.865005, - -142.154999, 0.000000, -169.865005, - -137.192993, 10.000000, -176.266006, - -137.192993, 0.000000, -176.266006, - -185.574005, 5.000000, -176.634003, - -185.574005, 0.000000, -176.634003, - -171.177002, 5.000000, -161.817001, - -171.177002, 0.000000, -161.817001, - -165.518997, 5.000000, -167.315994, - -165.518997, 0.000000, -167.315994, - -164.998001, 5.000000, -167.817001, - -164.998001, 0.000000, -167.817001, - -179.388000, 5.000000, -182.634003, - -179.388000, 0.000000, -182.634003, - -197.972000, 10.000000, -10.887000, - -197.972000, 0.000000, -10.887000, - -191.117004, 10.000000, -6.423000, - -191.117004, 0.000000, -6.423000, - -178.117996, 10.000000, -32.037998, - -178.117996, 0.000000, -32.037998, - -181.388000, 10.000000, -33.819000, - -181.388000, 0.000000, -33.819000, - -187.158997, 10.000000, -23.177000, - -187.158997, 0.000000, -23.177000, - -189.699997, 10.000000, -24.613001, - -189.699997, 0.000000, -24.613001, - -190.481995, 10.000000, -23.177000, - -190.481995, 0.000000, -23.177000, - -194.735001, 10.000000, -167.727997, - -194.735001, 0.000000, -167.727997, - -180.345001, 10.000000, -152.910995, - -180.345001, 0.000000, -152.910995, - -171.177002, 10.000000, -161.817001, - -185.574005, 10.000000, -176.634003, - 93.318001, 5.000000, 113.432999, - 93.318001, 0.000000, 113.432999, - 80.539001, 5.000000, 127.113998, - 80.539001, 0.000000, 127.113998, - 85.982002, 5.000000, 132.190002, - 85.982002, 0.000000, 132.190002, - 98.767998, 5.000000, 118.510002, - 98.767998, 0.000000, 118.510002, - -15.040000, 44.000000, 62.573002, - -15.040000, 41.000000, 62.573002, - -6.106000, 44.000000, 41.154999, - -6.106000, 41.000000, 41.154999, - -19.841000, 44.000000, 35.422001, - -19.841000, 41.000000, 35.422001, - -28.782000, 44.000000, 56.840000, - -28.782000, 41.000000, 56.840000, - -19.781000, 41.000000, 34.341999, - -19.781000, 0.000000, 34.341999, - -24.101000, 41.000000, 44.827999, - -24.101000, 0.000000, 44.827999, - -29.209999, 41.000000, 57.217999, - -29.209999, 0.000000, 57.217999, - -14.913000, 41.000000, 63.118000, - -14.913000, 0.000000, 63.118000, - -5.484000, 41.000000, 40.230999, - -5.484000, 0.000000, 40.230999, - -16.906000, 41.000000, 35.521999, - -16.906000, 0.000000, 35.521999, - -19.781000, 7.500000, 34.341999, - -16.906000, 7.500000, 35.521999, - -16.163000, 7.500000, 33.719002, - -16.163000, 0.000000, 33.719002, - -19.039000, 7.500000, 32.539001, - -19.039000, 0.000000, 32.539001, - -34.405998, 22.000000, -142.623993, - -34.405998, 0.000000, -142.623993, - -40.931999, 22.000000, -130.869003, - -40.931999, 0.000000, -130.869003, - -41.527000, 22.000000, -129.800003, - -41.527000, 0.000000, -129.800003, - -29.812000, 22.000000, -123.288002, - -29.812000, 0.000000, -123.288002, - -20.289000, 22.000000, -118.011002, - -20.289000, 0.000000, -118.011002, - -7.838000, 22.000000, -111.098000, - -7.838000, 0.000000, -111.098000, - 0.635000, 22.000000, -106.400002, - 0.635000, 0.000000, -106.400002, - 3.009000, 22.000000, -110.664001, - 3.009000, 0.000000, -110.664001, - 3.316000, 22.000000, -111.220001, - 3.316000, 0.000000, -111.220001, - 7.750000, 22.000000, -119.212997, - 7.750000, 0.000000, -119.212997, - -22.730000, 22.000000, -136.134003, - -22.730000, 0.000000, -136.134003, - -30.728001, 22.000000, -140.576004, - -30.728001, 0.000000, -140.576004, - 3.009000, 20.000000, -110.664001, - 0.635000, 20.000000, -106.400002, - -7.838000, 20.000000, -111.098000, - -20.289000, 20.000000, -118.011002, - -29.812000, 20.000000, -123.288002, - -41.527000, 20.000000, -129.800003, - -42.155998, 20.000000, -130.145004, - -42.155998, 0.000000, -130.145004, - -53.491001, 20.000000, -109.718002, - -53.491001, 0.000000, -109.718002, - -41.085999, 20.000000, -102.827003, - -41.085999, 0.000000, -102.827003, - -18.049000, 20.000000, -90.046997, - -18.049000, 0.000000, -90.046997, - -19.039000, 20.000000, -88.254997, - -19.039000, 0.000000, -88.254997, - -7.965000, 20.000000, -82.110001, - -7.965000, 0.000000, -82.110001, - 6.733000, 20.000000, -108.603996, - 6.733000, 0.000000, -108.603996, - -69.753998, 15.000000, 42.847000, - -69.753998, 0.000000, 42.847000, - -64.824997, 15.000000, 28.565001, - -64.824997, 0.000000, 28.565001, - -66.872002, 15.000000, 27.863001, - -66.872002, 0.000000, 27.863001, - -69.038002, 15.000000, 27.106001, - -69.038002, 0.000000, 27.106001, - -74.689003, 15.000000, 25.158001, - -74.689003, 0.000000, 25.158001, - -79.683998, 15.000000, 39.318001, - -79.683998, 0.000000, 39.318001, - -97.544998, 10.000000, 199.057999, - -97.544998, 0.000000, 199.057999, - -108.097000, 10.000000, 184.408997, - -108.097000, 0.000000, 184.408997, - -110.724998, 10.000000, 185.867004, - -110.724998, 0.000000, 185.867004, - -112.136002, 10.000000, 183.261993, - -112.136002, 0.000000, 183.261993, - -120.067001, 10.000000, 191.856003, - -120.067001, 0.000000, 191.856003, - -107.148003, 10.000000, 209.197998, - -107.148003, 0.000000, 209.197998, - -99.565002, 10.000000, 201.595993, - -99.565002, 0.000000, 201.595993, - -99.110001, 10.000000, 201.149994, - -99.110001, 0.000000, 201.149994, - -177.675995, 18.000000, 38.283001, - -177.675995, 0.000000, 38.283001, - -183.380997, 18.000000, 31.270000, - -183.380997, 0.000000, 31.270000, - -184.718002, 18.000000, 32.728001, - -184.718002, 0.000000, 32.728001, - -192.809006, 18.000000, 41.533001, - -192.809006, 0.000000, 41.533001, - -194.360992, 18.000000, 40.242001, - -194.360992, 0.000000, 40.242001, - -202.438995, 18.000000, 50.683998, - -202.438995, 0.000000, 50.683998, - -194.313995, 18.000000, 57.185001, - -194.313995, 0.000000, 57.185001, - -187.647003, 18.000000, 48.747002, - -187.647003, 0.000000, 48.747002, - -178.880005, 18.000000, 39.551998, - -178.880005, 0.000000, 39.551998, - -194.313995, 28.000000, 57.185001, - -199.268997, 28.000000, 63.708000, - -199.268997, 0.000000, 63.708000, - -209.701004, 28.000000, 78.445999, - -209.701004, 0.000000, 78.445999, - -199.403000, 28.000000, 87.619003, - -199.403000, 0.000000, 87.619003, - -182.565002, 28.000000, 66.346001, - -182.565002, 0.000000, 66.346001, - -169.873001, 28.000000, 50.293999, - -169.873001, 0.000000, 50.293999, - -168.701996, 28.000000, 48.813999, - -168.701996, 0.000000, 48.813999, - -177.675995, 28.000000, 38.283001, - -178.880005, 28.000000, 39.551998, - -187.647003, 28.000000, 48.747002, - -183.380997, 21.000000, 31.270000, - -189.947006, 21.000000, 24.357000, - -189.947006, 0.000000, 24.357000, - -199.796997, 21.000000, 15.462000, - -199.796997, 0.000000, 15.462000, - -212.048004, 21.000000, 6.679000, - -212.048004, 0.000000, 6.679000, - -212.931000, 21.000000, 8.327000, - -212.931000, 0.000000, 8.327000, - -214.421997, 21.000000, 11.110000, - -214.421997, 0.000000, 11.110000, - -217.457993, 21.000000, 16.709000, - -217.457993, 0.000000, 16.709000, - -225.395004, 21.000000, 30.613001, - -225.395004, 0.000000, 30.613001, - -232.804993, 21.000000, 41.366001, - -232.804993, 0.000000, 41.366001, - -239.806000, 21.000000, 50.951000, - -239.806000, 0.000000, 50.951000, - -240.354004, 21.000000, 51.863998, - -240.354004, 0.000000, 51.863998, - -222.513000, 21.000000, 67.415001, - -222.513000, 0.000000, 67.415001, - -209.701004, 21.000000, 78.445999, - -199.268997, 21.000000, 63.708000, - -194.313995, 21.000000, 57.185001, - -202.438995, 21.000000, 50.683998, - -194.360992, 21.000000, 40.242001, - -192.809006, 21.000000, 41.533001, - -184.718002, 21.000000, 32.728001, - -182.718994, 10.000000, -2.827000, - -182.718994, 0.000000, -2.827000, - -170.735001, 10.000000, -28.041000, - -170.735001, 0.000000, -28.041000, - -190.429001, 10.000000, -38.706001, - -190.429001, 0.000000, -38.706001, - -197.584000, 10.000000, -27.372999, - -197.584000, 0.000000, -27.372999, - -170.975998, 7.500000, -118.345001, - -170.975998, 0.000000, -118.345001, - -180.845993, 7.500000, -110.307999, - -180.845993, 0.000000, -110.307999, - -173.009003, 7.500000, -96.057999, - -173.009003, 0.000000, -96.057999, - -161.681000, 7.500000, -101.045998, - -161.681000, 0.000000, -101.045998, - -178.158005, 7.500000, -93.920998, - -178.158005, 0.000000, -93.920998, - -174.011993, 7.500000, -84.347000, - -174.011993, 0.000000, -84.347000, - -157.421005, 7.500000, -90.481003, - -157.421005, 0.000000, -90.481003, - -191.651993, 7.500000, -76.710999, - -191.651993, 0.000000, -76.710999, - -179.375000, 7.500000, -96.725998, - -179.375000, 0.000000, -96.725998, - -197.014999, 7.500000, -89.089996, - -197.014999, 0.000000, -89.089996, - -80.680000, 15.000000, 79.025002, - -80.680000, 0.000000, 79.025002, - -83.989998, 15.000000, 77.556000, - -83.989998, 0.000000, 77.556000, - -92.958000, 15.000000, 92.818001, - -92.958000, 0.000000, 92.818001, - -82.874001, 15.000000, 102.703003, - -82.874001, 0.000000, 102.703003, - -73.905998, 15.000000, 93.508003, - -73.905998, 0.000000, 93.508003, - -72.615997, 15.000000, 90.824997, - -72.615997, 0.000000, 90.824997, - -81.958000, 15.000000, 81.608002, - -81.958000, 0.000000, 81.608002, - -53.563999, 7.500000, 113.055000, - -53.563999, 0.000000, 113.055000, - -48.997002, 7.500000, 114.713997, - -48.997002, 0.000000, 114.713997, - -46.876999, 7.500000, 112.253998, - -46.876999, 0.000000, 112.253998, - -40.931999, 7.500000, 115.125000, - -40.931999, 0.000000, 115.125000, - -34.271999, 7.500000, 107.889999, - -34.271999, 0.000000, 107.889999, - -30.306999, 7.500000, 98.349998, - -30.306999, 0.000000, 98.349998, - -31.209000, 7.500000, 97.871002, - -31.209000, 0.000000, 97.871002, - -28.722000, 7.500000, 92.338997, - -28.722000, 0.000000, 92.338997, - -42.283001, 7.500000, 86.683998, - -42.283001, 0.000000, 86.683998, - -45.827000, 7.500000, 94.364998, - -45.827000, 0.000000, 94.364998, - -47.372002, 7.500000, 97.972000, - -47.372002, 0.000000, 97.972000, - -52.334000, 7.500000, 109.526001, - -52.334000, 0.000000, 109.526001, - -54.146000, 7.500000, 112.498001, - -54.146000, 0.000000, 112.498001, - -143.839996, 10.000000, 125.377998, - -143.839996, 0.000000, 125.377998, - -141.031006, 10.000000, 127.315002, - -141.031006, 0.000000, 127.315002, - -138.557007, 10.000000, 129.007004, - -138.557007, 0.000000, 129.007004, - -135.854996, 10.000000, 130.865997, - -135.854996, 0.000000, 130.865997, - -111.834999, 10.000000, 112.231003, - -111.834999, 0.000000, 112.231003, - -119.994003, 10.000000, 104.750999, - -119.994003, 0.000000, 104.750999, - -122.821999, 10.000000, 102.156998, - -122.821999, 0.000000, 102.156998, - -126.432999, 10.000000, 98.839996, - -126.432999, 0.000000, 98.839996, - -139.934998, 10.000000, 86.449997, - -139.934998, 0.000000, 86.449997, - -141.091003, 10.000000, 85.392998, - -141.091003, 0.000000, 85.392998, - -145.337997, 10.000000, 85.614998, - -145.337997, 0.000000, 85.614998, - -164.535995, 10.000000, 107.968002, - -164.535995, 0.000000, 107.968002, - -164.147995, 10.000000, 111.406998, - -164.147995, 0.000000, 111.406998, - -54.186001, 15.000000, 129.552002, - -54.186001, 0.000000, 129.552002, - -36.205002, 15.000000, 146.360992, - -36.205002, 0.000000, 146.360992, - -35.616001, 15.000000, 145.792999, - -35.616001, 0.000000, 145.792999, - -24.863001, 15.000000, 135.485001, - -24.863001, 0.000000, 135.485001, - -26.181000, 15.000000, 134.205002, - -26.181000, 0.000000, 134.205002, - -25.511999, 15.000000, 133.559998, - -25.511999, 0.000000, 133.559998, - -28.962000, 15.000000, 130.108994, - -28.962000, 0.000000, 130.108994, - -29.691000, 15.000000, 130.776993, - -29.691000, 0.000000, 130.776993, - -31.577000, 15.000000, 128.951004, - -31.577000, 0.000000, 128.951004, - -29.457001, 15.000000, 126.334999, - -29.457001, 0.000000, 126.334999, - -26.007000, 15.000000, 121.514999, - -26.007000, 0.000000, 121.514999, - -25.518999, 15.000000, 121.882004, - -25.518999, 0.000000, 121.882004, - -22.542999, 15.000000, 117.842003, - -22.542999, 0.000000, 117.842003, - -23.091000, 15.000000, 117.441002, - -23.091000, 0.000000, 117.441002, - -20.370001, 15.000000, 113.644997, - -20.370001, 0.000000, 113.644997, - -34.271999, 15.000000, 107.889999, - -40.931999, 15.000000, 115.125000, - -3.645000, 15.000000, 179.143005, - -3.645000, 0.000000, 179.143005, - 8.064000, 15.000000, 168.858002, - 8.064000, 0.000000, 168.858002, - -16.049999, 15.000000, 143.544998, - -16.049999, 0.000000, 143.544998, - -24.247999, 15.000000, 134.951004, - -24.247999, 0.000000, 134.951004, - -69.198997, 7.500000, 79.771004, - -69.198997, 0.000000, 79.771004, - -79.209000, 7.500000, 76.053001, - -79.209000, 0.000000, 76.053001, - -80.680000, 7.500000, 79.025002, - -81.958000, 7.500000, 81.608002, - -72.615997, 7.500000, 90.824997, - -16.371000, 15.000000, 104.550003, - -16.371000, 0.000000, 104.550003, - -30.306999, 15.000000, 98.349998, - -79.476997, 15.000000, 57.764000, - -79.476997, 0.000000, 57.764000, - -88.417000, 15.000000, 54.914001, - -88.417000, 0.000000, 54.914001, - -96.113998, 15.000000, 71.544998, - -96.113998, 0.000000, 71.544998, - -87.688004, 15.000000, 75.719002, - -87.688004, 0.000000, 75.719002, - -22.235001, 15.000000, 78.068001, - -22.235001, 0.000000, 78.068001, - -28.722000, 15.000000, 92.338997, - -31.209000, 15.000000, 97.871002, - -15.722000, 15.000000, 104.762001, - -15.722000, 0.000000, 104.762001, - -6.748000, 15.000000, 84.424004, - -6.748000, 0.000000, 84.424004, - -43.012001, 15.000000, 69.552002, - -43.012001, 0.000000, 69.552002, - -47.578999, 15.000000, 82.698997, - -47.578999, 0.000000, 82.698997, - -50.575001, 15.000000, 92.773003, - -50.575001, 0.000000, 92.773003, - -45.827000, 15.000000, 94.364998, - -42.283001, 15.000000, 86.683998, - -35.817001, 15.000000, 72.501999, - -35.817001, 0.000000, 72.501999, - -35.409000, 15.000000, 71.278000, - -35.409000, 0.000000, 71.278000, - -41.581001, 15.000000, 68.727997, - -41.581001, 0.000000, 68.727997, - -42.056000, 15.000000, 69.897003, - -42.056000, 0.000000, 69.897003, - -96.862999, 31.200001, 88.888000, - -96.862999, 0.000000, 88.888000, - -92.958000, 31.200001, 92.818001, - -83.989998, 31.200001, 77.556000, - -87.688004, 31.200001, 75.719002, - -96.113998, 31.200001, 71.544998, - -88.417000, 31.200001, 54.914001, - -116.616997, 31.200001, 45.908001, - -116.616997, 0.000000, 45.908001, - -127.810997, 31.200001, 57.686001, - -127.810997, 0.000000, 57.686001, - -62.771999, 10.000000, 181.447998, - -62.771999, 0.000000, 181.447998, - -53.717999, 10.000000, 168.067001, - -53.717999, 0.000000, 168.067001, - -68.141998, 10.000000, 153.317993, - -68.141998, 0.000000, 153.317993, - -77.570999, 10.000000, 170.817001, - -77.570999, 0.000000, 170.817001, - -86.751999, 10.000000, 164.283005, - -86.751999, 0.000000, 164.283005, - -20.704000, 10.000000, 211.235001, - -20.704000, 0.000000, 211.235001, - -12.318000, 10.000000, 202.919998, - -12.318000, 0.000000, 202.919998, - -37.327999, 10.000000, 177.339996, - -37.327999, 0.000000, 177.339996, - -40.717999, 10.000000, 180.490005, - -40.717999, 0.000000, 180.490005, - -51.077000, 10.000000, 170.593994, - -51.077000, 0.000000, 170.593994, - -139.606995, 10.000000, 142.007996, - -139.606995, 0.000000, 142.007996, - -143.578995, 10.000000, 139.225998, - -143.578995, 0.000000, 139.225998, - -146.052994, 10.000000, 137.511002, - -146.052994, 0.000000, 137.511002, - -159.574997, 10.000000, 156.490997, - -159.574997, 0.000000, 156.490997, - -152.485992, 10.000000, 161.600006, - -152.485992, 0.000000, 161.600006, - -147.464005, 10.000000, 154.431000, - -147.464005, 0.000000, 154.431000, - -146.675003, 10.000000, 153.328995, - -146.675003, 0.000000, 153.328995, - -146.261002, 10.000000, 152.684006, - -146.261002, 0.000000, 152.684006, - -142.401993, 10.000000, 146.350006, - -142.401993, 0.000000, 146.350006, - -145.485001, 10.000000, 136.720993, - -145.485001, 0.000000, 136.720993, - -156.156998, 10.000000, 129.039993, - -156.156998, 0.000000, 129.039993, - -156.177002, 10.000000, 129.029007, - -156.177002, 0.000000, 129.029007, - -156.725998, 10.000000, 129.807999, - -156.725998, 0.000000, 129.807999, - -158.136993, 10.000000, 128.783997, - -158.136993, 0.000000, 128.783997, - -158.270996, 10.000000, 128.973007, - -158.270996, 0.000000, 128.973007, - -158.798996, 10.000000, 128.639008, - -164.195007, 10.000000, 135.417999, - -167.011002, 10.000000, 139.380997, - -172.761002, 10.000000, 147.139999, - 134.363007, 15.000000, -18.679001, - 134.363007, 0.000000, -18.679001, - 110.115997, 15.000000, 10.275000, - 110.115997, 0.000000, 10.275000, - 106.638000, 15.000000, 7.180000, - 106.638000, 0.000000, 7.180000, - 91.064003, 15.000000, 25.593000, - 91.064003, 0.000000, 25.593000, - 89.412003, 15.000000, 27.452000, - 89.412003, 0.000000, 27.452000, - 93.859001, 15.000000, 31.504000, - 93.859001, 0.000000, 31.504000, - 93.504997, 15.000000, 31.915001, - 93.504997, 0.000000, 31.915001, - 105.908997, 15.000000, 42.668999, - 105.908997, 0.000000, 42.668999, - 118.147003, 15.000000, 55.827000, - 118.147003, 0.000000, 55.827000, - 128.552002, 15.000000, 56.138000, - 128.552002, 0.000000, 56.138000, - 148.184998, 15.000000, 38.404999, - 148.184998, 0.000000, 38.404999, - 150.123993, 15.000000, 38.493999, - 150.123993, 0.000000, 38.493999, - 154.630997, 15.000000, 34.353001, - 154.630997, 0.000000, 34.353001, - 154.852005, 15.000000, 32.382999, - 154.852005, 0.000000, 32.382999, - 165.216995, 15.000000, 23.021000, - 165.216995, 0.000000, 23.021000, - 165.423996, 15.000000, 13.581000, - 165.423996, 0.000000, 13.581000, - 157.600006, 15.000000, 5.010000, - 157.600006, 0.000000, 5.010000, - 158.054993, 15.000000, 4.498000, - 158.054993, 0.000000, 4.498000, - 64.135002, 15.000000, -42.825001, - 64.135002, 0.000000, -42.825001, - 79.280998, 15.000000, -37.325001, - 79.280998, 0.000000, -37.325001, - 79.474998, 15.000000, -38.027000, - 79.474998, 0.000000, -38.027000, - 84.818001, 15.000000, -36.680000, - 84.818001, 0.000000, -36.680000, - 84.564003, 15.000000, -35.455002, - 84.564003, 0.000000, -35.455002, - 90.100998, 15.000000, -32.750000, - 90.100998, 0.000000, -32.750000, - 97.643997, 15.000000, -44.784000, - 97.643997, 0.000000, -44.784000, - 66.809998, 15.000000, -52.365002, - 66.809998, 0.000000, -52.365002, - 63.419998, 15.000000, -43.159000, - 63.419998, 0.000000, -43.159000, - 111.907997, 15.000000, -41.744999, - 111.907997, 0.000000, -41.744999, - 88.602997, 15.000000, -28.798000, - 88.602997, 0.000000, -28.798000, - 95.203003, 15.000000, -25.158001, - 95.203003, 0.000000, -25.158001, - 98.694000, 15.000000, -30.134001, - 98.694000, 0.000000, -30.134001, - 101.469002, 15.000000, -28.396999, - 101.469002, 0.000000, -28.396999, - 102.078003, 15.000000, -20.527000, - 102.078003, 0.000000, -20.527000, - 102.892998, 15.000000, -21.962999, - 102.892998, 0.000000, -21.962999, - 104.191002, 15.000000, -21.173000, - 104.191002, 0.000000, -21.173000, - 116.970001, 15.000000, -37.236000, - 116.970001, 0.000000, -37.236000, - 117.237000, 15.000000, -37.536999, - 117.237000, 0.000000, -37.536999, - 112.175003, 15.000000, -41.966999, - 112.175003, 0.000000, -41.966999, - 62.375999, 15.000000, -38.951000, - 62.375999, 0.000000, -38.951000, - 60.175999, 15.000000, -34.097000, - 60.175999, 0.000000, -34.097000, - 59.748001, 15.000000, -33.151001, - 59.748001, 0.000000, -33.151001, - 57.133999, 15.000000, -30.011999, - 57.133999, 0.000000, -30.011999, - 57.930000, 15.000000, -29.143000, - 57.930000, 0.000000, -29.143000, - 56.023998, 15.000000, -24.947001, - 56.023998, 0.000000, -24.947001, - 51.102001, 15.000000, -14.082000, - 51.102001, 0.000000, -14.082000, - 46.220001, 15.000000, -3.306000, - 46.220001, 0.000000, -3.306000, - 42.181000, 15.000000, 5.611000, - 42.181000, 0.000000, 5.611000, - 39.881001, 15.000000, 10.676000, - 39.881001, 0.000000, 10.676000, - 35.902000, 15.000000, 19.459000, - 35.902000, 0.000000, 19.459000, - 33.808998, 15.000000, 22.476000, - 33.808998, 0.000000, 22.476000, - 29.329000, 15.000000, 28.931999, - 29.329000, 0.000000, 28.931999, - 30.150999, 15.000000, 29.288000, - 30.150999, 0.000000, 29.288000, - 52.486000, 15.000000, 39.018002, - 52.486000, 0.000000, 39.018002, - 66.716003, 15.000000, 45.207001, - 66.716003, 0.000000, 45.207001, - 68.702003, 15.000000, 43.035999, - 68.702003, 0.000000, 43.035999, - 69.056999, 15.000000, 43.403999, - 69.056999, 0.000000, 43.403999, - 70.581001, 15.000000, 41.723000, - 70.581001, 0.000000, 41.723000, - 72.085999, 15.000000, 40.063999, - 72.085999, 0.000000, 40.063999, - 71.718002, 15.000000, 39.730000, - 71.718002, 0.000000, 39.730000, - 73.737999, 15.000000, 37.526001, - 73.737999, 0.000000, 37.526001, - 74.580002, 15.000000, 38.339001, - 74.580002, 0.000000, 38.339001, - 80.865997, 15.000000, 31.103001, - 80.865997, 0.000000, 31.103001, - 83.125999, 15.000000, 28.497999, - 83.125999, 0.000000, 28.497999, - 87.874001, 15.000000, 23.021000, - 87.874001, 0.000000, 23.021000, - 120.546997, 15.000000, -33.417999, - 120.546997, 0.000000, -33.417999, - -52.132999, 15.000000, 24.691000, - -52.132999, 0.000000, 24.691000, - -50.448002, 15.000000, 23.054001, - -50.448002, 0.000000, 23.054001, - -48.636002, 15.000000, 17.934000, - -48.636002, 0.000000, 17.934000, - -44.389999, 15.000000, 19.625999, - -44.389999, 0.000000, 19.625999, - -41.220001, 15.000000, 11.911000, - -41.220001, 0.000000, 11.911000, - -54.955002, 15.000000, 5.566000, - -54.955002, 0.000000, 5.566000, - -60.605999, 15.000000, 19.358999, - -60.605999, 0.000000, 19.358999, - -60.833000, 15.000000, 19.926001, - -60.833000, 0.000000, 19.926001, - -56.172001, 15.000000, 21.663000, - -56.172001, 0.000000, 21.663000, - -56.786999, 15.000000, 23.021000, - -56.786999, 0.000000, 23.021000, - -62.859001, 15.000000, -4.542000, - -62.859001, 0.000000, -4.542000, - -67.674004, 15.000000, -0.712000, - -67.674004, 0.000000, -0.712000, - -63.421001, 15.000000, 5.522000, - -63.421001, 0.000000, 5.522000, - -67.875000, 15.000000, 9.307000, - -67.875000, 0.000000, 9.307000, - -66.263000, 15.000000, 11.533000, - -66.263000, 0.000000, 11.533000, - -67.594002, 15.000000, 15.095000, - -67.594002, 0.000000, 15.095000, - -68.055000, 15.000000, 16.174999, - -68.055000, 0.000000, 16.174999, - -64.498001, 15.000000, 17.688999, - -64.498001, 0.000000, 17.688999, - -62.557999, 15.000000, 18.524000, - -62.557999, 0.000000, 18.524000, - -73.719002, 23.200001, 14.372000, - -73.719002, 0.000000, 14.372000, - -78.292999, 23.200001, 7.871000, - -78.292999, 0.000000, 7.871000, - -96.703003, 23.200001, 22.743000, - -96.703003, 0.000000, 22.743000, - -91.981003, 23.200001, 28.921000, - -91.981003, 0.000000, 28.921000, - -91.365997, 23.200001, 28.497999, - -91.365997, 0.000000, 28.497999, - -16.691999, 15.000000, 23.099001, - -16.691999, 0.000000, 23.099001, - -25.865999, 15.000000, 18.646000, - -25.865999, 0.000000, 18.646000, - -28.936001, 15.000000, 25.580999, - -28.936001, 0.000000, 25.580999, - -19.975000, 15.000000, 30.334999, - -19.975000, 0.000000, 30.334999, - -1.639000, 20.000000, 2.271000, - -1.639000, 0.000000, 2.271000, - 22.434000, 20.000000, 12.501000, - 22.434000, 0.000000, 12.501000, - 26.280001, 20.000000, 4.119000, - 1.350000, 20.000000, -5.187000, - -66.872002, 7.500000, 27.863001, - -62.557999, 7.500000, 18.524000, - -64.498001, 7.500000, 17.688999, - -69.038002, 7.500000, 27.106001, - -14.692000, 15.000000, 32.939999, - -14.692000, 0.000000, 32.939999, - -11.329000, 15.000000, 25.604000, - -11.329000, 0.000000, 25.604000, - -2.856000, 20.000000, 1.748000, - -2.856000, 0.000000, 1.748000, - -7.738000, 20.000000, 14.026000, - -7.738000, 0.000000, 14.026000, - 16.597000, 20.000000, 25.225000, - 16.597000, 0.000000, 25.225000, - -50.441002, 15.000000, 34.786999, - -50.441002, 0.000000, 34.786999, - -44.750999, 15.000000, 37.103001, - -44.750999, 0.000000, 37.103001, - -41.286999, 15.000000, 28.409000, - -41.286999, 0.000000, 28.409000, - -29.558001, 15.000000, 26.983999, - -29.558001, 0.000000, 26.983999, - -48.816002, 15.000000, 30.413000, - -48.816002, 0.000000, 30.413000, - -15.187000, 15.000000, 34.141998, - -15.187000, 0.000000, 34.141998, - -2.328000, 15.000000, 39.652000, - -2.328000, 0.000000, 39.652000, - -7.203000, 15.000000, 50.316002, - -7.203000, 0.000000, 50.316002, - 2.701000, 15.000000, 54.636002, - 2.701000, 0.000000, 54.636002, - 8.111000, 15.000000, 43.070000, - 8.111000, 0.000000, 43.070000, - 8.552000, 15.000000, 43.280998, - 8.552000, 0.000000, 43.280998, - 8.759000, 15.000000, 42.835999, - 8.759000, 0.000000, 42.835999, - 8.318000, 15.000000, 42.624001, - 8.318000, 0.000000, 42.624001, - 9.334000, 15.000000, 40.442001, - 9.334000, 0.000000, 40.442001, - 9.783000, 15.000000, 40.653999, - 9.783000, 0.000000, 40.653999, - 10.010000, 15.000000, 40.209000, - 10.010000, 0.000000, 40.209000, - 9.548000, 15.000000, 39.986000, - 9.548000, 0.000000, 39.986000, - 14.363000, 15.000000, 29.656000, - 14.363000, 0.000000, 29.656000, - -8.373000, 15.000000, 19.146999, - -8.373000, 0.000000, 19.146999, - -8.527000, 15.000000, 19.481001, - -8.527000, 0.000000, 19.481001, - -55.249001, 15.000000, 47.744999, - -55.249001, 0.000000, 47.744999, - -54.561001, 15.000000, 28.231001, - -54.561001, 0.000000, 28.231001, - -60.030998, 15.000000, 42.580002, - -60.030998, 0.000000, 42.580002, - -61.160999, 15.000000, 45.841000, - -61.160999, 0.000000, 45.841000, - -62.751999, 15.000000, 24.691000, - -62.751999, 0.000000, 24.691000, - -63.259998, 15.000000, 24.568001, - -63.259998, 0.000000, 24.568001, - -78.252998, 15.000000, 20.761000, - -78.252998, 0.000000, 20.761000, - -72.442001, 15.000000, 16.264000, - -72.442001, 0.000000, 16.264000, - -73.719002, 15.000000, 14.372000, - -91.365997, 15.000000, 28.497999, - -85.569000, 15.000000, 35.265999, - -85.569000, 0.000000, 35.265999, - -82.351997, 15.000000, 38.126999, - -82.351997, 0.000000, 38.126999, - -24.101000, 15.000000, 44.827999, - -31.417000, 15.000000, 41.834000, - -31.417000, 0.000000, 41.834000, - -32.199001, 15.000000, 43.726002, - -32.199001, 0.000000, 43.726002, - -35.542999, 15.000000, 42.390999, - -35.542999, 0.000000, 42.390999, - -39.882000, 15.000000, 53.277000, - -39.882000, 0.000000, 53.277000, - -29.209999, 15.000000, 57.217999, - -34.933998, 15.000000, 41.043999, - -34.933998, 0.000000, 41.043999, - 6.332000, 15.000000, 132.835999, - 6.332000, 0.000000, 132.835999, - 6.599000, 15.000000, 128.472000, - 6.599000, 0.000000, 128.472000, - 1.557000, 15.000000, 126.691002, - 1.557000, 0.000000, 126.691002, - 13.694000, 15.000000, 95.878998, - 13.694000, 0.000000, 95.878998, - 8.271000, 15.000000, 92.338997, - 8.271000, 0.000000, 92.338997, - 2.179000, 15.000000, 88.487000, - 2.179000, 0.000000, 88.487000, - 0.655000, 15.000000, 88.253998, - 0.655000, 0.000000, 88.253998, - -0.348000, 15.000000, 88.598999, - -0.348000, 0.000000, 88.598999, - -1.158000, 15.000000, 89.544998, - -1.158000, 0.000000, 89.544998, - -8.353000, 15.000000, 109.214996, - -8.353000, 0.000000, 109.214996, - -9.744000, 15.000000, 112.297997, - -9.744000, 0.000000, 112.297997, - -10.827000, 15.000000, 116.606003, - -10.827000, 0.000000, 116.606003, - -11.482000, 15.000000, 116.516998, - -11.482000, 0.000000, 116.516998, - -14.465000, 15.000000, 126.803001, - -14.465000, 0.000000, 126.803001, - -12.753000, 15.000000, 130.153000, - -12.753000, 0.000000, 130.153000, - 11.742000, 7.500000, 165.173004, - 11.742000, 0.000000, 165.173004, - -9.222000, 7.500000, 143.399994, - -9.222000, 0.000000, 143.399994, - -16.049999, 7.500000, 143.544998, - 8.064000, 7.500000, 168.858002, - 16.583000, 7.500000, 177.462006, - 16.583000, 0.000000, 177.462006, - 18.436001, 7.500000, 172.419998, - 18.436001, 0.000000, 172.419998, - 11.642000, 15.000000, 194.104004, - 11.642000, 0.000000, 194.104004, - 14.831000, 15.000000, 185.210007, - 14.831000, 0.000000, 185.210007, - 13.628000, 15.000000, 184.820007, - 13.628000, 0.000000, 184.820007, - 16.583000, 15.000000, 177.462006, - 11.334000, 15.000000, 133.537003, - 11.334000, 0.000000, 133.537003, - 11.956000, 15.000000, 133.626007, - 11.956000, 0.000000, 133.626007, - 26.527000, 15.000000, 146.639008, - 26.527000, 0.000000, 146.639008, - 47.130001, 15.000000, 123.663002, - 47.130001, 0.000000, 123.663002, - 23.912001, 15.000000, 102.546997, - 23.912001, 0.000000, 102.546997, - 12.812000, 15.000000, 116.717003, - 12.812000, 0.000000, 116.717003, - 7.201000, 15.000000, 132.957993, - 7.201000, 0.000000, 132.957993, - 58.257000, 15.000000, 156.179001, - 58.257000, 0.000000, 156.179001, - 49.530998, 15.000000, 149.610992, - 49.530998, 0.000000, 149.610992, - 48.541000, 15.000000, 150.947006, - 48.541000, 0.000000, 150.947006, - 47.557999, 15.000000, 150.246002, - 47.557999, 0.000000, 150.246002, - 46.969002, 15.000000, 150.802002, - 46.969002, 0.000000, 150.802002, - 46.000000, 15.000000, 149.990005, - 46.000000, 0.000000, 149.990005, - 38.952000, 15.000000, 157.725998, - 38.952000, 0.000000, 157.725998, - 39.901001, 15.000000, 158.572006, - 39.901001, 0.000000, 158.572006, - 37.333000, 15.000000, 161.834000, - 37.333000, 0.000000, 161.834000, - 37.681000, 15.000000, 162.100998, - 37.681000, 0.000000, 162.100998, - 48.046001, 15.000000, 169.792999, - 48.046001, 0.000000, 169.792999, - 33.889000, 15.000000, 170.326996, - 33.889000, 0.000000, 170.326996, - 44.081001, 15.000000, 175.970993, - 44.081001, 0.000000, 175.970993, - 32.618999, 15.000000, 169.636993, - 32.618999, 0.000000, 169.636993, - 7.603000, 15.000000, 197.955994, - 7.603000, 0.000000, 197.955994, - 14.925000, 15.000000, 205.324997, - 14.925000, 0.000000, 205.324997, - 18.937000, 15.000000, 201.529007, - 18.937000, 0.000000, 201.529007, - 21.739000, 15.000000, 204.735001, - 21.739000, 0.000000, 204.735001, - 29.629999, 15.000000, 197.399002, - 29.629999, 0.000000, 197.399002, - 35.514000, 15.000000, 190.408005, - 35.514000, 0.000000, 190.408005, - 44.474998, 15.000000, 176.182007, - 44.474998, 0.000000, 176.182007, - 33.327999, 15.000000, 171.128998, - 33.327999, 0.000000, 171.128998, - 26.667000, 15.000000, 168.901993, - 26.667000, 0.000000, 168.901993, - 19.392000, 15.000000, 186.869003, - 19.392000, 0.000000, 186.869003, - 68.542000, 15.000000, 142.475998, - 68.542000, 0.000000, 142.475998, - 59.834999, 15.000000, 134.828995, - 59.834999, 0.000000, 134.828995, - 51.470001, 15.000000, 144.001007, - 51.470001, 0.000000, 144.001007, - 51.890999, 15.000000, 144.367996, - 51.890999, 0.000000, 144.367996, - 52.813999, 15.000000, 145.169998, - 52.813999, 0.000000, 145.169998, - 54.752998, 15.000000, 130.365005, - 54.752998, 0.000000, 130.365005, - 34.036999, 15.000000, 153.339996, - 34.036999, 0.000000, 153.339996, - 44.287998, 15.000000, 148.520004, - 44.287998, 0.000000, 148.520004, - 49.376999, 15.000000, 142.699005, - 49.376999, 0.000000, 142.699005, - 51.269001, 15.000000, 144.223999, - 51.269001, 0.000000, 144.223999, - -110.424004, 10.000000, 160.018997, - -110.424004, 0.000000, 160.018997, - -119.773003, 10.000000, 172.520004, - -119.773003, 0.000000, 172.520004, - -114.236000, 10.000000, 176.973007, - -114.236000, 0.000000, 176.973007, - -111.889000, 10.000000, 173.912003, - -111.889000, 0.000000, 173.912003, - -106.773003, 10.000000, 177.539993, - -106.773003, 0.000000, 177.539993, - -99.110001, 10.000000, 168.468002, - -99.110001, 0.000000, 168.468002, - -90.136002, 10.000000, 175.169006, - -90.136002, 0.000000, 175.169006, - -97.838997, 10.000000, 184.664993, - -97.838997, 0.000000, 184.664993, - -98.848999, 10.000000, 185.910995, - -98.848999, 0.000000, 185.910995, - -96.188004, 10.000000, 188.048996, - -96.188004, 0.000000, 188.048996, - -97.598999, 10.000000, 189.908005, - -97.598999, 0.000000, 189.908005, - -93.365997, 10.000000, 193.246994, - -93.365997, 0.000000, 193.246994, - -83.369003, 10.000000, 180.223007, - -83.369003, 0.000000, 180.223007, - -111.842003, 10.000000, 182.938995, - -111.842003, 0.000000, 182.938995, - -116.035004, 10.000000, 179.166000, - -116.035004, 0.000000, 179.166000, - -127.764000, 10.000000, 181.524994, - -127.764000, 0.000000, 181.524994, - -67.626999, 10.000000, 191.376999, - -67.626999, 0.000000, 191.376999, - -67.713997, 10.000000, 191.498993, - -67.713997, 0.000000, 191.498993, - -68.209000, 10.000000, 191.164993, - -68.209000, 0.000000, 191.164993, - -68.542999, 10.000000, 191.643997, - -68.542999, 0.000000, 191.643997, - -71.016998, 10.000000, 189.873993, - -71.016998, 0.000000, 189.873993, - -70.737000, 10.000000, 189.462006, - -70.737000, 0.000000, 189.462006, - -71.980003, 10.000000, 188.593994, - -71.980003, 0.000000, 188.593994, - -72.267998, 10.000000, 189.005997, - -72.267998, 0.000000, 189.005997, - -74.795998, 10.000000, 187.235992, - -74.795998, 0.000000, 187.235992, - -74.514999, 10.000000, 186.824005, - -74.514999, 0.000000, 186.824005, - -75.764999, 10.000000, 185.955994, - -75.764999, 0.000000, 185.955994, - -76.053001, 10.000000, 186.367996, - -76.053001, 0.000000, 186.367996, - -78.573997, 10.000000, 184.664993, - -78.573997, 0.000000, 184.664993, - -78.233002, 10.000000, 184.175003, - -78.233002, 0.000000, 184.175003, - -78.727997, 10.000000, 183.830002, - -78.727997, 0.000000, 183.830002, - -78.634003, 10.000000, 183.695999, - -78.634003, 0.000000, 183.695999, - -83.382004, 10.000000, 180.279007, - -83.382004, 0.000000, 180.279007, - -83.455002, 10.000000, 180.378998, - -83.455002, 0.000000, 180.378998, - -92.871002, 10.000000, 192.690002, - -92.871002, 0.000000, 192.690002, - -93.057999, 10.000000, 192.934998, - -93.057999, 0.000000, 192.934998, - -95.332001, 10.000000, 195.906998, - -95.332001, 0.000000, 195.906998, - -95.151001, 10.000000, 196.052002, - -95.151001, 0.000000, 196.052002, - -99.110001, 10.000000, 201.216995, - -99.110001, 0.000000, 201.216995, - -99.530998, 10.000000, 201.639999, - -99.530998, 0.000000, 201.639999, - -107.127998, 10.000000, 209.210007, - -107.127998, 0.000000, 209.210007, - -107.355003, 10.000000, 209.432007, - -107.355003, 0.000000, 209.432007, - -101.931999, 10.000000, 216.199997, - -101.931999, 0.000000, 216.199997, - -101.551003, 10.000000, 215.865997, - -101.551003, 0.000000, 215.865997, - -99.652000, 10.000000, 218.237000, - -99.652000, 0.000000, 218.237000, - -100.039001, 10.000000, 218.570999, - -100.039001, 0.000000, 218.570999, - -98.749001, 10.000000, 220.162994, - -98.749001, 0.000000, 220.162994, - -98.367996, 10.000000, 219.839996, - -98.367996, 0.000000, 219.839996, - -96.461998, 10.000000, 222.210999, - -96.461998, 0.000000, 222.210999, - -96.862999, 10.000000, 222.533997, - -96.862999, 0.000000, 222.533997, - -94.682999, 10.000000, 225.250000, - -94.682999, 0.000000, 225.250000, - -94.000999, 10.000000, 224.692993, - -94.000999, 0.000000, 224.692993, - -91.848000, 10.000000, 227.354004, - -91.848000, 0.000000, 227.354004, - -92.416000, 10.000000, 227.843994, - -92.416000, 0.000000, 227.843994, - -91.152000, 10.000000, 229.423996, - -91.152000, 0.000000, 229.423996, - -90.570999, 10.000000, 228.945999, - -90.570999, 0.000000, 228.945999, - -88.436996, 10.000000, 231.628006, - -88.436996, 0.000000, 231.628006, - -89.133003, 10.000000, 232.184998, - -89.133003, 0.000000, 232.184998, - -87.627998, 10.000000, 234.033005, - -87.627998, 0.000000, 234.033005, - -86.873001, 10.000000, 233.442993, - -86.873001, 0.000000, 233.442993, - -85.668999, 10.000000, 234.945007, - -85.668999, 0.000000, 234.945007, - -77.403999, 10.000000, 225.962006, - -77.403999, 0.000000, 225.962006, - -80.171997, 10.000000, 222.612000, - -80.171997, 0.000000, 222.612000, - -78.306000, 10.000000, 219.962997, - -78.306000, 0.000000, 219.962997, - -78.198997, 10.000000, 219.796005, - -78.198997, 0.000000, 219.796005, - -78.112000, 10.000000, 219.617004, - -78.112000, 0.000000, 219.617004, - -78.045998, 10.000000, 219.417007, - -78.045998, 0.000000, 219.417007, - -78.012001, 10.000000, 219.216995, - -78.012001, 0.000000, 219.216995, - -77.985001, 10.000000, 218.893997, - -77.985001, 0.000000, 218.893997, - -73.919998, 10.000000, 221.798996, - -73.919998, 0.000000, 221.798996, - -73.485001, 10.000000, 221.253998, - -73.485001, 0.000000, 221.253998, - -71.680000, 10.000000, 219.016006, - -71.680000, 0.000000, 219.016006, - -71.572998, 10.000000, 219.104996, - -71.572998, 0.000000, 219.104996, - -69.386002, 10.000000, 216.746002, - -69.386002, 0.000000, 216.746002, - -74.007004, 10.000000, 213.617996, - -74.007004, 0.000000, 213.617996, - -74.053001, 10.000000, 213.584000, - -74.053001, 0.000000, 213.584000, - -75.217003, 10.000000, 212.804993, - -75.217003, 0.000000, 212.804993, - -74.046997, 10.000000, 211.067993, - -74.046997, 0.000000, 211.067993, - -73.987000, 10.000000, 211.113007, - -73.987000, 0.000000, 211.113007, - -72.415001, 10.000000, 208.820007, - -72.415001, 0.000000, 208.820007, - -62.826000, 10.000000, 194.794006, - -62.826000, 0.000000, 194.794006, - -62.778999, 10.000000, 194.716003, - -62.778999, 0.000000, 194.716003, - -64.290001, 10.000000, 193.669998, - -64.290001, 0.000000, 193.669998, - 85.139000, 15.000000, 179.565994, - 85.139000, 0.000000, 179.565994, - 95.705002, 15.000000, 167.210007, - 95.705002, 0.000000, 167.210007, - 83.018997, 15.000000, 154.710007, - 83.018997, 0.000000, 154.710007, - 61.186001, 15.000000, 183.785004, - 61.186001, 0.000000, 183.785004, - 72.507004, 15.000000, 191.988998, - 72.507004, 0.000000, 191.988998, - 76.232002, 15.000000, 186.279007, - 76.232002, 0.000000, 186.279007, - 76.834000, 15.000000, 186.723999, - 76.834000, 0.000000, 186.723999, - 79.943001, 15.000000, 182.171005, - 79.943001, 0.000000, 182.171005, - 78.827003, 15.000000, 181.335999, - 78.827003, 0.000000, 181.335999, - 82.283997, 15.000000, 176.628006, - 82.283997, 0.000000, 176.628006, - 99.677002, 7.300000, 171.440002, - 99.677002, 0.000000, 171.440002, - 88.167999, 7.300000, 187.358002, - 88.167999, 0.000000, 187.358002, - 92.962997, 7.300000, 192.089005, - 92.962997, 0.000000, 192.089005, - 103.943001, 7.300000, 175.981995, - 103.943001, 0.000000, 175.981995, - 103.943001, 15.000000, 175.981995, - 92.962997, 15.000000, 192.089005, - 99.456001, 15.000000, 198.667999, - 99.456001, 0.000000, 198.667999, - 101.549004, 15.000000, 195.873993, - 101.549004, 0.000000, 195.873993, - 110.704002, 15.000000, 183.195007, - 110.704002, 0.000000, 183.195007, - 56.532001, 7.500000, 189.205994, - 56.532001, 0.000000, 189.205994, - 72.600998, 7.500000, 199.492004, - 72.600998, 0.000000, 199.492004, - 75.430000, 7.500000, 194.070999, - 75.430000, 0.000000, 194.070999, - 72.507004, 7.500000, 191.988998, - 61.186001, 7.500000, 183.785004, - 60.598000, 7.500000, 183.350998, - 60.598000, 0.000000, 183.350998, - 84.142998, 15.000000, 219.093994, - 84.142998, 0.000000, 219.093994, - 83.547997, 15.000000, 219.873001, - 83.547997, 0.000000, 219.873001, - 112.135002, 15.000000, 232.608002, - 112.135002, 0.000000, 232.608002, - 114.695999, 15.000000, 234.289001, - 114.695999, 0.000000, 234.289001, - 135.968002, 15.000000, 208.585999, - 135.968002, 0.000000, 208.585999, - 139.009995, 5.000000, 78.278999, - 139.009995, 0.000000, 78.278999, - 149.115005, 5.000000, 87.330002, - 149.115005, 0.000000, 87.330002, - 148.973999, 5.000000, 92.361000, - 148.973999, 0.000000, 92.361000, - 139.345001, 5.000000, 103.893997, - 139.345001, 0.000000, 103.893997, - 181.024994, 5.000000, 138.289993, - 181.024994, 0.000000, 138.289993, - 186.703003, 5.000000, 142.988007, - 186.703003, 0.000000, 142.988007, - 188.962997, 5.000000, 144.847000, - 188.962997, 0.000000, 144.847000, - 201.326996, 5.000000, 130.408997, - 201.326996, 0.000000, 130.408997, - 209.987000, 5.000000, 120.212997, - 209.987000, 0.000000, 120.212997, - 197.542007, 5.000000, 109.638000, - 197.542007, 0.000000, 109.638000, - 219.723007, 5.000000, 83.300003, - 219.723007, 0.000000, 83.300003, - 231.485992, 5.000000, 45.185001, - 231.485992, 0.000000, 45.185001, - 185.459000, 5.000000, 30.000999, - 185.459000, 0.000000, 30.000999, - 162.957001, 5.000000, 50.472000, - 162.957001, 0.000000, 50.472000, - 143.738007, 5.000000, 67.959999, - 143.738007, 0.000000, 67.959999, - 179.259995, 25.700001, 125.945000, - 179.259995, 0.000000, 125.945000, - 174.639008, 25.700001, 131.143997, - 174.639008, 0.000000, 131.143997, - 177.916000, 25.700001, 134.059998, - 177.916000, 0.000000, 134.059998, - 182.537003, 25.700001, 128.873001, - 182.537003, 0.000000, 128.873001, - 149.455994, 25.700001, 65.634003, - 149.455994, 0.000000, 65.634003, - 151.602005, 25.700001, 67.971001, - 151.602005, 0.000000, 67.971001, - 157.514008, 25.700001, 62.584000, - 157.514008, 0.000000, 62.584000, - 160.563004, 25.700001, 65.922997, - 160.563004, 0.000000, 65.922997, - 170.386002, 25.700001, 56.962002, - 170.386002, 0.000000, 56.962002, - 167.110001, 25.700001, 53.377998, - 167.110001, 0.000000, 53.377998, - 158.610001, 25.700001, 61.125000, - 158.610001, 0.000000, 61.125000, - 156.690994, 25.700001, 59.033001, - 156.690994, 0.000000, 59.033001, - 149.783005, 25.700001, 109.503998, - 149.783005, 0.000000, 109.503998, - 157.487000, 25.700001, 116.027000, - 157.487000, 0.000000, 116.027000, - 159.699997, 25.700001, 113.411003, - 159.699997, 0.000000, 113.411003, - 152.003006, 25.700001, 106.888000, - 152.003006, 0.000000, 106.888000, - 134.770996, 25.700001, 91.047997, - 134.770996, 0.000000, 91.047997, - 134.436005, 25.700001, 92.750999, - 134.436005, 0.000000, 92.750999, - 135.057999, 25.700001, 92.940002, - 135.057999, 0.000000, 92.940002, - 135.393005, 25.700001, 95.010002, - 135.393005, 0.000000, 95.010002, - 138.669006, 25.700001, 96.580002, - 138.669006, 0.000000, 96.580002, - 142.988998, 25.700001, 92.584000, - 142.988998, 0.000000, 92.584000, - 142.761993, 25.700001, 90.179001, - 142.761993, 0.000000, 90.179001, - 143.190002, 25.700001, 89.901001, - 143.190002, 0.000000, 89.901001, - 142.794998, 25.700001, 86.706001, - 142.794998, 0.000000, 86.706001, - 139.632004, 25.700001, 85.526001, - 139.632004, 0.000000, 85.526001, - 137.339005, 25.700001, 87.061996, - 137.339005, 0.000000, 87.061996, - 137.445999, 25.700001, 87.462997, - 137.445999, 0.000000, 87.462997, - 135.787003, 25.700001, 88.844002, - 135.787003, 0.000000, 88.844002, - 134.436005, 25.700001, 88.276001, - 134.436005, 0.000000, 88.276001, - 132.095993, 25.700001, 87.274002, - 132.095993, 0.000000, 87.274002, - 131.145996, 25.700001, 89.511002, - 131.145996, 0.000000, 89.511002, - 133.447006, 25.700001, 90.490997, - 133.447006, 0.000000, 90.490997, - 219.423004, 31.700001, 109.102997, - 219.423004, 5.000000, 109.102997, - 194.766998, 31.700001, 88.164001, - 194.766998, 5.000000, 88.164001, - 176.671997, 31.700001, 109.459000, - 176.671997, 5.000000, 109.459000, - 201.326996, 31.700001, 130.408997, - 209.987000, 31.700001, 120.212997, - 203.688004, 7.500000, 157.003006, - 203.688004, 0.000000, 157.003006, - 206.791000, 7.500000, 152.951004, - 206.791000, 0.000000, 152.951004, - 210.983002, 7.500000, 147.462997, - 210.983002, 0.000000, 147.462997, - 216.820999, 7.500000, 139.837997, - 216.820999, 0.000000, 139.837997, - 217.350006, 7.500000, 139.147995, - 217.350006, 0.000000, 139.147995, - 230.529999, 7.500000, 121.916000, - 230.529999, 0.000000, 121.916000, - 232.602997, 7.500000, 119.154999, - 232.602997, 0.000000, 119.154999, - 223.789001, 7.500000, 111.418999, - 223.789001, 0.000000, 111.418999, - 234.589005, 7.500000, 99.107002, - 234.589005, 0.000000, 99.107002, - 239.289993, 7.500000, 93.752998, - 239.289993, 0.000000, 93.752998, - 249.274002, 7.500000, 85.927002, - 249.274002, 0.000000, 85.927002, - 245.863007, 7.500000, 81.573997, - 245.863007, 0.000000, 81.573997, - 238.360001, 7.500000, 78.668999, - 238.360001, 0.000000, 78.668999, - 240.927994, 7.500000, 71.845001, - 240.927994, 0.000000, 71.845001, - 248.089996, 7.500000, 52.787998, - 248.089996, 0.000000, 52.787998, - 248.819000, 7.500000, 50.905998, - 248.819000, 0.000000, 50.905998, - 239.511002, 7.500000, 47.834000, - 239.511002, 0.000000, 47.834000, - 231.485992, 7.500000, 45.185001, - 219.723007, 7.500000, 83.300003, - 206.928619, 7.500000, 98.492203, - 206.928619, 0.000000, 98.492203, - 219.423004, 7.500000, 109.102997, - 219.423004, 0.000000, 109.102997, - 209.987000, 7.500000, 120.212997, - 201.326996, 7.500000, 130.408997, - 188.962997, 7.500000, 144.847000, - 197.007004, 7.500000, 151.492996, - 197.007004, 0.000000, 151.492996, - 198.966995, 7.500000, 153.106995, - 198.966995, 0.000000, 153.106995, - 139.345001, 7.500000, 103.893997, - 148.973999, 7.500000, 92.361000, - 149.115005, 7.500000, 87.330002, - 139.009995, 7.500000, 78.278999, - 135.332001, 7.500000, 86.317001, - 135.332001, 0.000000, 86.317001, - 134.436005, 7.500000, 88.276001, - 135.787003, 7.500000, 88.844002, - 137.445999, 7.500000, 87.462997, - 137.339005, 7.500000, 87.061996, - 139.632004, 7.500000, 85.526001, - 142.794998, 7.500000, 86.706001, - 143.190002, 7.500000, 89.901001, - 142.761993, 7.500000, 90.179001, - 142.988998, 7.500000, 92.584000, - 138.669006, 7.500000, 96.580002, - 135.393005, 7.500000, 95.010002, - 135.057999, 7.500000, 92.940002, - 134.436005, 7.500000, 92.750999, - 134.770996, 7.500000, 91.047997, - 133.447006, 7.500000, 90.490997, - 130.658005, 7.500000, 96.747002, - 130.658005, 0.000000, 96.747002, - 133.514008, 7.500000, 99.096001, - 133.514008, 0.000000, 99.096001, - 135.298996, 7.500000, 100.554001, - 135.298996, 0.000000, 100.554001, - 114.421997, 21.299999, 118.820999, - 114.421997, 0.000000, 118.820999, - 120.058998, 21.299999, 124.231003, - 120.058998, 0.000000, 124.231003, - 121.616997, 21.299999, 125.790001, - 121.616997, 0.000000, 125.790001, - 124.378998, 21.299999, 128.572998, - 124.378998, 0.000000, 128.572998, - 125.275002, 21.299999, 127.625999, - 125.275002, 0.000000, 127.625999, - 132.089005, 21.299999, 120.490997, - 132.089005, 0.000000, 120.490997, - 127.615997, 21.299999, 116.349998, - 127.615997, 0.000000, 116.349998, - 126.332001, 21.299999, 115.158997, - 126.332001, 0.000000, 115.158997, - 124.686996, 21.299999, 113.634003, - 124.686996, 0.000000, 113.634003, - 121.917999, 21.299999, 111.061996, - 121.917999, 0.000000, 111.061996, - 156.423996, 20.000000, 174.044998, - 156.423996, 0.000000, 174.044998, - 134.229004, 20.000000, 156.914001, - 134.229004, 0.000000, 156.914001, - 121.042000, 20.000000, 172.419998, - 121.042000, 0.000000, 172.419998, - 136.294998, 20.000000, 187.970993, - 136.294998, 0.000000, 187.970993, - 141.979004, 20.000000, 193.770004, - 141.979004, 0.000000, 193.770004, - 125.275002, 20.000000, 127.625999, - 133.968002, 20.000000, 135.774994, - 133.968002, 0.000000, 135.774994, - 135.893997, 20.000000, 137.578003, - 135.893997, 0.000000, 137.578003, - 144.205994, 20.000000, 145.192001, - 144.205994, 0.000000, 145.192001, - 150.753006, 20.000000, 137.556000, - 150.753006, 0.000000, 137.556000, - 142.654999, 20.000000, 130.153000, - 142.654999, 0.000000, 130.153000, - 132.089005, 20.000000, 120.490997, - 161.526001, 20.000000, 167.076996, - 161.526001, 0.000000, 167.076996, - 171.362000, 20.000000, 153.507004, - 171.362000, 0.000000, 153.507004, - 164.962997, 20.000000, 148.554001, - 164.962997, 0.000000, 148.554001, - 141.992996, 20.000000, 147.796997, - 141.992996, 0.000000, 147.796997, - 136.195007, 20.000000, 154.598007, - 136.195007, 0.000000, 154.598007, - 147.910995, 20.000000, 198.824005, - 147.910995, 0.000000, 198.824005, - 153.233994, 20.000000, 203.509995, - 153.233994, 0.000000, 203.509995, - 164.408005, 20.000000, 187.136002, - 164.408005, 0.000000, 187.136002, - 164.802002, 20.000000, 186.567993, - 164.802002, 0.000000, 186.567993, - 180.591003, 20.000000, 160.843002, - 180.591003, 0.000000, 160.843002, - 175.388000, 20.000000, 156.712997, - 175.388000, 0.000000, 156.712997, - 166.695007, 20.000000, 170.561005, - 166.695007, 0.000000, 170.561005, - 158.970993, 20.000000, 182.895004, - 158.970993, 0.000000, 182.895004, - 173.207993, 20.000000, 154.977005, - 173.207993, 0.000000, 154.977005, - 115.852997, 7.500000, 141.328995, - 115.852997, 0.000000, 141.328995, - 119.150002, 7.500000, 138.167999, - 119.150002, 0.000000, 138.167999, - 118.126999, 7.500000, 137.009995, - 118.126999, 0.000000, 137.009995, - 122.907997, 7.500000, 132.412994, - 122.907997, 0.000000, 132.412994, - 122.166000, 7.500000, 131.432999, - 122.166000, 0.000000, 131.432999, - 124.378998, 7.500000, 128.572998, - 121.616997, 7.500000, 125.790001, - 120.058998, 7.500000, 124.231003, - 116.555000, 7.500000, 128.317001, - 116.555000, 0.000000, 128.317001, - 117.344002, 7.500000, 129.018005, - 117.344002, 0.000000, 129.018005, - 113.887001, 7.500000, 131.712006, - 113.887001, 0.000000, 131.712006, - 108.102997, 7.500000, 136.542999, - 108.102997, 0.000000, 136.542999, - 98.513000, 7.500000, 146.037994, - 98.513000, 0.000000, 146.037994, - 98.774002, 7.500000, 146.261002, - 98.774002, 0.000000, 146.261002, - 97.824997, 7.500000, 147.541000, - 97.824997, 0.000000, 147.541000, - 103.334999, 7.500000, 153.496002, - 103.334999, 0.000000, 153.496002, - 111.459999, 21.299999, 129.317993, - 111.459999, 0.000000, 129.317993, - 107.781998, 21.299999, 125.689003, - 107.781998, 0.000000, 125.689003, - 91.967003, 21.299999, 141.819000, - 91.967003, 0.000000, 141.819000, - 97.824997, 21.299999, 147.541000, - 98.774002, 21.299999, 146.261002, - 98.513000, 21.299999, 146.037994, - 108.102997, 21.299999, 136.542999, - 113.887001, 21.299999, 131.712006, - 175.007004, 10.000000, -8.582000, - 175.007004, 0.000000, -8.582000, - 172.371994, 10.000000, -10.542000, - 172.371994, 0.000000, -10.542000, - 174.438995, 10.000000, -13.325000, - 174.438995, 0.000000, -13.325000, - 176.906006, 10.000000, -11.488000, - 176.906006, 0.000000, -11.488000, - 183.145004, 10.000000, -21.073000, - 183.145004, 0.000000, -21.073000, - 179.179993, 10.000000, -22.097000, - 179.179993, 0.000000, -22.097000, - 177.274002, 10.000000, -22.587000, - 177.274002, 0.000000, -22.587000, - 164.990005, 10.000000, -3.863000, - 164.990005, 0.000000, -3.863000, - 167.016006, 10.000000, -2.159000, - 167.016006, 0.000000, -2.159000, - 169.477005, 10.000000, -0.089000, - 169.477005, 0.000000, -0.089000, - 174.171005, 10.000000, -23.377001, - 174.171005, 0.000000, -23.377001, - 169.537003, 10.000000, -16.464001, - 169.537003, 0.000000, -16.464001, - 167.817993, 10.000000, -13.503000, - 167.817993, 0.000000, -13.503000, - 162.268005, 10.000000, -6.156000, - 162.268005, 0.000000, -6.156000, - 171.589996, 10.000000, 1.681000, - 171.589996, 0.000000, 1.681000, - 173.917007, 10.000000, 3.652000, - 173.917007, 0.000000, 3.652000, - 187.686005, 10.000000, -19.903999, - 187.686005, 0.000000, -19.903999, - 184.817001, 10.000000, -20.650000, - 184.817001, 0.000000, -20.650000, - 178.884995, 10.000000, -10.019000, - 178.884995, 0.000000, -10.019000, - 176.819000, 10.000000, -7.236000, - 176.819000, 0.000000, -7.236000, - 176.524994, 10.000000, 5.833000, - 176.524994, 0.000000, 5.833000, - 179.199997, 10.000000, 8.093000, - 179.199997, 0.000000, 8.093000, - 184.242004, 10.000000, -2.115000, - 184.242004, 0.000000, -2.115000, - 181.813995, 10.000000, -3.740000, - 181.813995, 0.000000, -3.740000, - 185.091003, 10.000000, -9.006000, - 185.091003, 0.000000, -9.006000, - 187.057007, 10.000000, -7.826000, - 187.057007, 0.000000, -7.826000, - 192.427002, 10.000000, -18.690001, - 192.427002, 0.000000, -18.690001, - 189.431000, 10.000000, -19.458000, - 189.431000, 0.000000, -19.458000, - 158.776993, 10.000000, -62.071999, - 158.776993, 0.000000, -62.071999, - 152.684998, 10.000000, -42.445999, - 152.684998, 0.000000, -42.445999, - 159.132004, 10.000000, -46.242001, - 159.132004, 0.000000, -46.242001, - 164.100006, 10.000000, -45.084000, - 164.100006, 0.000000, -45.084000, - 155.548004, 10.000000, -36.958000, - 155.548004, 0.000000, -36.958000, - 164.554993, 10.000000, -34.442001, - 164.554993, 0.000000, -34.442001, - 172.065002, 10.000000, -42.825001, - 172.065002, 0.000000, -42.825001, - 191.584000, 10.000000, -37.192001, - 191.584000, 0.000000, -37.192001, - 183.371994, 10.000000, -29.021000, - 183.371994, 0.000000, -29.021000, - 188.654999, 10.000000, -27.596001, - 188.654999, 0.000000, -27.596001, - 192.253006, 10.000000, -26.627001, - 192.253006, 0.000000, -26.627001, - 199.796005, 10.000000, -34.609001, - 199.796005, 0.000000, -34.609001, - 206.710007, 10.000000, -32.672001, - 206.710007, 0.000000, -32.672001, - 215.470001, 10.000000, -19.903999, - 215.470001, 0.000000, -19.903999, - 218.587006, 10.000000, -18.846001, - 218.587006, 0.000000, -18.846001, - 220.854004, 10.000000, -25.903999, - 220.854004, 0.000000, -25.903999, - 226.182999, 10.000000, -41.789001, - 226.182999, 0.000000, -41.789001, - 215.470001, 4.000000, -19.903999, - 206.710007, 4.000000, -32.672001, - 199.796005, 4.000000, -34.609001, - 192.253006, 4.000000, -26.627001, - 183.371994, 4.000000, -29.021000, - 191.584000, 4.000000, -37.192001, - 172.065002, 4.000000, -42.825001, - 164.554993, 4.000000, -34.442001, - 155.548004, 4.000000, -36.958000, - 164.100006, 4.000000, -45.084000, - 159.132004, 4.000000, -46.242001, - 152.684998, 4.000000, -42.445999, - 151.522003, 4.000000, -38.227001, - 151.522003, 0.000000, -38.227001, - 153.701996, 4.000000, -37.536999, - 153.701996, 0.000000, -37.536999, - 187.117004, 10.000000, 4.019000, - 187.117004, 0.000000, 4.019000, - 185.766006, 10.000000, 3.329000, - 185.766006, 0.000000, 3.329000, - 187.759003, 10.000000, -0.567000, - 187.759003, 0.000000, -0.567000, - 189.076996, 10.000000, 0.112000, - 189.076996, 0.000000, 0.112000, - 190.681000, 10.000000, -3.306000, - 190.681000, 0.000000, -3.306000, - 189.684998, 10.000000, -3.751000, - 189.684998, 0.000000, -3.751000, - 191.404007, 10.000000, -7.569000, - 191.404007, 0.000000, -7.569000, - 192.487000, 10.000000, -7.080000, - 192.487000, 0.000000, -7.080000, - 197.481995, 10.000000, -17.388000, - 197.481995, 0.000000, -17.388000, - 195.035004, 10.000000, -18.011000, - 195.035004, 0.000000, -18.011000, - 181.828003, 10.000000, 9.874000, - 181.828003, 0.000000, 9.874000, - 183.660004, 10.000000, 11.121000, - 183.660004, 0.000000, 11.121000, - 188.587997, 10.000000, 1.069000, - 188.587997, 0.000000, 1.069000, - 189.557999, 10.000000, 1.559000, - 189.557999, 0.000000, 1.559000, - 188.052994, 10.000000, 4.498000, - 188.052994, 0.000000, 4.498000, - 187.270996, 10.000000, 13.570000, - 187.270996, 0.000000, 13.570000, - 188.173996, 10.000000, 11.733000, - 188.173996, 0.000000, 11.733000, - 191.464005, 10.000000, 12.980000, - 191.464005, 0.000000, 12.980000, - 196.707001, 10.000000, 14.962000, - 196.707001, 0.000000, 14.962000, - 208.227997, 10.000000, -13.592000, - 208.227997, 0.000000, -13.592000, - 203.440002, 10.000000, -15.284000, - 203.440002, 0.000000, -15.284000, - 193.757996, 10.000000, -6.512000, - 193.757996, 0.000000, -6.512000, - 192.500000, 10.000000, -3.718000, - 192.500000, 0.000000, -3.718000, - 191.143005, 10.000000, -4.330000, - 191.143005, 0.000000, -4.330000, - 84.931999, 23.600000, -60.869999, - 84.931999, 0.000000, -60.869999, - 89.839996, 23.600000, -81.052002, - 89.839996, 0.000000, -81.052002, - 74.834000, 23.600000, -83.579002, - 74.834000, 0.000000, -83.579002, - 70.380997, 23.600000, -64.431999, - 70.380997, 0.000000, -64.431999, - 144.580994, 10.000000, -50.627998, - 144.580994, 0.000000, -50.627998, - 148.966995, 10.000000, -65.055000, - 148.966995, 0.000000, -65.055000, - 135.653000, 10.000000, -69.107002, - 135.653000, 0.000000, -69.107002, - 131.574005, 10.000000, -54.390999, - 131.574005, 0.000000, -54.390999, - 142.541000, 10.000000, -51.217999, - 142.541000, 0.000000, -51.217999, - 122.373001, 23.600000, -73.137001, - 122.373001, 0.000000, -73.137001, - 117.323997, 23.600000, -52.387001, - 117.323997, 0.000000, -52.387001, - 129.701996, 23.600000, -47.344002, - 129.701996, 0.000000, -47.344002, - 131.574005, 23.600000, -54.390999, - 135.653000, 23.600000, -69.107002, - 84.792000, 23.600000, -60.313000, - 84.792000, 0.000000, -60.313000, - 157.473007, 10.000000, -27.930000, - 157.473007, 0.000000, -27.930000, - 149.776993, 10.000000, -30.134001, - 149.776993, 0.000000, -30.134001, - 146.947998, 10.000000, -30.947001, - 146.947998, 0.000000, -30.947001, - 145.302994, 10.000000, -28.141001, - 145.302994, 0.000000, -28.141001, - 141.865997, 10.000000, -24.312000, - 141.865997, 0.000000, -24.312000, - 141.505005, 10.000000, -41.321999, - 141.505005, 0.000000, -41.321999, - 143.798004, 10.000000, -40.609001, - 143.798004, 0.000000, -40.609001, - 151.522003, 10.000000, -38.227001, - 156.998993, 10.000000, -62.605999, - 156.998993, 0.000000, -62.605999, - -76.514000, 7.500000, -137.537003, - -76.514000, 0.000000, -137.537003, - -86.498001, 7.500000, -143.248001, - -86.498001, 0.000000, -143.248001, - -94.502998, 7.500000, -130.656998, - -94.502998, 0.000000, -130.656998, - -87.040001, 7.500000, -125.759003, - -87.040001, 0.000000, -125.759003, - -89.902000, 7.500000, -120.816002, - -89.902000, 0.000000, -120.816002, - -84.685997, 7.500000, -116.998001, - -84.685997, 0.000000, -116.998001, - -70.917000, 7.500000, -110.362999, - -70.917000, 0.000000, -110.362999, - -70.014000, 7.500000, -109.929001, - -70.014000, 0.000000, -109.929001, - -64.851997, 7.500000, -121.750999, - -64.851997, 0.000000, -121.750999, - -79.268997, 7.500000, -127.561996, - -79.268997, 0.000000, -127.561996, - -78.921997, 7.500000, -128.285995, - -78.921997, 0.000000, -128.285995, - -81.369003, 7.500000, -129.856003, - -81.369003, 0.000000, -129.856003, - -111.099998, 7.500000, -167.884003, - -111.099998, 0.000000, -167.884003, - -124.320000, 7.500000, -178.826996, - -124.320000, 0.000000, -178.826996, - -135.279999, 7.500000, -164.899994, - -135.279999, 0.000000, -164.899994, - -121.196999, 7.500000, -154.001999, - -121.196999, 0.000000, -154.001999, - -75.277000, 7.500000, -165.656998, - -75.277000, 0.000000, -165.656998, - -99.657997, 7.500000, -179.406006, - -99.657997, 0.000000, -179.406006, - -108.491997, 7.500000, -165.957993, - -108.491997, 0.000000, -165.957993, - -82.620003, 7.500000, -151.718994, - -82.620003, 0.000000, -151.718994, - -51.898998, 7.500000, -152.488007, - -51.898998, 0.000000, -152.488007, - -58.411999, 7.500000, -141.087997, - -58.411999, 0.000000, -141.087997, - -48.862999, 7.500000, -135.733994, - -48.862999, 0.000000, -135.733994, - -40.931999, 7.500000, -130.869003, - -34.405998, 7.500000, -142.623993, - -115.634003, 7.500000, -189.826004, - -115.634003, 0.000000, -189.826004, - -91.721001, 7.500000, -116.775002, - -91.721001, 0.000000, -116.775002, - -92.836998, 7.500000, -112.623001, - -92.836998, 0.000000, -112.623001, - -82.264999, 7.500000, -151.552994, - -82.264999, 0.000000, -151.552994, - -86.939003, 7.500000, -143.537003, - -86.939003, 0.000000, -143.537003, - -70.703003, 7.500000, -147.434006, - -70.703003, 0.000000, -147.434006, - -115.580002, 7.500000, -113.580002, - -115.580002, 0.000000, -113.580002, - -115.527000, 7.500000, -110.852997, - -115.527000, 0.000000, -110.852997, - -115.259003, 7.500000, -96.625999, - -115.259003, 0.000000, -96.625999, - -105.830002, 7.500000, -96.804001, - -105.830002, 0.000000, -96.804001, - -106.105003, 7.500000, -111.053001, - -106.105003, 0.000000, -111.053001, - -106.151001, 7.500000, -113.758003, - -106.151001, 0.000000, -113.758003, - -123.711998, 7.500000, -110.685997, - -123.711998, 0.000000, -110.685997, - -123.444000, 7.500000, -96.470001, - -123.444000, 0.000000, -96.470001, - -123.764999, 7.500000, -113.425003, - -123.764999, 0.000000, -113.425003, - -137.520996, 7.500000, -110.407997, - -137.520996, 0.000000, -110.407997, - -148.889008, 7.500000, -104.819000, - -148.889008, 0.000000, -104.819000, - -145.839005, 7.500000, -96.213997, - -145.839005, 0.000000, -96.213997, - -135.548004, 7.500000, -113.525002, - -135.548004, 0.000000, -113.525002, - -134.692001, 7.500000, -111.865997, - -134.692001, 0.000000, -111.865997, - -144.248001, 7.500000, -130.311996, - -144.248001, 0.000000, -130.311996, - -146.667999, 7.500000, -128.431000, - -146.667999, 0.000000, -128.431000, - -151.582993, 7.500000, -125.191002, - -151.582993, 0.000000, -125.191002, - -158.423996, 7.500000, -120.682999, - -158.423996, 0.000000, -120.682999, - -156.591995, 7.500000, -117.109001, - -156.591995, 0.000000, -117.109001, - -155.561996, 7.500000, -117.487999, - -155.561996, 0.000000, -117.487999, - -129.182007, 7.500000, -149.348007, - -129.182007, 0.000000, -149.348007, - -139.380005, 7.500000, -158.744003, - -139.380005, 0.000000, -158.744003, - -150.580002, 7.500000, -146.598999, - -150.580002, 0.000000, -146.598999, - -140.522995, 7.500000, -137.337006, - -140.522995, 0.000000, -137.337006, - -138.156006, 7.500000, -135.154999, - -138.156006, 0.000000, -135.154999, - -126.961998, 7.500000, -147.300003, - -126.961998, 0.000000, -147.300003, - -159.781998, 7.500000, -136.735001, - -159.781998, 0.000000, -136.735001, - -163.065002, 7.500000, -134.320007, - -163.065002, 0.000000, -134.320007, - -162.503006, 7.500000, -133.440002, - -162.503006, 0.000000, -133.440002, - -160.309998, 7.500000, -130.011993, - -160.309998, 0.000000, -130.011993, - -163.378998, 7.500000, -127.417999, - -163.378998, 0.000000, -127.417999, - -180.345001, 5.000000, -152.910995, - -170.567993, 5.000000, -141.744995, - -170.567993, 0.000000, -141.744995, - -160.363998, 5.000000, -150.039001, - -160.363998, 0.000000, -150.039001, - -154.332001, 5.000000, -156.216995, - -154.332001, 0.000000, -156.216995, - -176.138000, 5.000000, -186.352005, - -176.138000, 0.000000, -186.352005, - -181.514999, 5.000000, -190.983002, - -181.514999, 0.000000, -190.983002, - -189.613007, 5.000000, -180.485001, - -189.613007, 0.000000, -180.485001, - -197.209000, 5.000000, -187.955002, - -197.209000, 0.000000, -187.955002, - -206.317001, 5.000000, -177.257004, - -206.317001, 0.000000, -177.257004, - -194.735001, 5.000000, -167.727997, - 117.344002, 21.299999, 129.018005, - 116.555000, 21.299999, 128.317001, - -79.209000, 15.000000, 76.053001, - -69.198997, 15.000000, 79.771004, - -67.894997, 15.000000, 75.830002, - -67.894997, 0.000000, 75.830002, - -63.555000, 15.000000, 62.738998, - -63.555000, 0.000000, 62.738998, - -173.785004, 7.500000, -123.577003, - -173.785004, 0.000000, -123.577003, - -191.197998, 7.500000, -114.670998, - -191.197998, 0.000000, -114.670998, - -186.462997, 7.500000, -106.667000, - -186.462997, 0.000000, -106.667000, - -184.322998, 7.500000, -108.304001, - -184.322998, 0.000000, -108.304001, - -212.408997, 24.000000, -166.313995, - -212.408997, 0.000000, -166.313995, - -229.421005, 24.000000, -146.087006, - -229.421005, 0.000000, -146.087006, - -222.453003, 24.000000, -138.917007, - -222.453003, 0.000000, -138.917007, - -223.067993, 24.000000, -138.326996, - -223.067993, 0.000000, -138.326996, - -216.649002, 24.000000, -132.104004, - -216.649002, 0.000000, -132.104004, - -217.384003, 24.000000, -131.503006, - -217.384003, 0.000000, -131.503006, - -207.942001, 24.000000, -121.763000, - -207.942001, 0.000000, -121.763000, - -208.464005, 24.000000, -121.238998, - -208.464005, 0.000000, -121.238998, - -206.169998, 24.000000, -118.412003, - -206.169998, 0.000000, -118.412003, - -197.095993, 24.000000, -124.178001, - -197.095993, 0.000000, -124.178001, - -196.119003, 24.000000, -122.931000, - -196.119003, 0.000000, -122.931000, - -185.820999, 24.000000, -128.563995, - -185.820999, 0.000000, -128.563995, - -180.798996, 24.000000, -133.229004, - -180.798996, 0.000000, -133.229004, - -309.058014, 7.500000, -228.121002, - -309.058014, 0.000000, -228.121002, - -317.830994, 7.500000, -213.748993, - -317.830994, 0.000000, -213.748993, - -316.066010, 7.500000, -212.591003, - -316.066010, 0.000000, -212.591003, - -316.975006, 7.500000, -211.255005, - -316.975006, 0.000000, -211.255005, - -317.276001, 7.500000, -211.455994, - -317.276001, 0.000000, -211.455994, - -320.212006, 7.500000, -206.423996, - -320.212006, 0.000000, -206.423996, - -315.898010, 7.500000, -203.695999, - -315.898010, 0.000000, -203.695999, - -316.787994, 7.500000, -202.093002, - -316.787994, 0.000000, -202.093002, - -316.467010, 7.500000, -200.156006, - -316.467010, 0.000000, -200.156006, - -314.200012, 7.500000, -198.776001, - -314.200012, 0.000000, -198.776001, - -312.354004, 7.500000, -199.320999, - -312.354004, 0.000000, -199.320999, - -310.601990, 7.500000, -198.218994, - -310.601990, 0.000000, -198.218994, - -309.645996, 7.500000, -199.977997, - -309.645996, 0.000000, -199.977997, - -289.638000, 7.500000, -188.000000, - -289.638000, 0.000000, -188.000000, - -294.058014, 7.500000, -180.473999, - -294.058014, 0.000000, -180.473999, - -284.261993, 7.500000, -174.985992, - -284.261993, 0.000000, -174.985992, - -283.485992, 7.500000, -174.751999, - -283.485992, 0.000000, -174.751999, - -282.596985, 7.500000, -174.929993, - -282.596985, 0.000000, -174.929993, - -281.881012, 7.500000, -175.498001, - -281.881012, 0.000000, -175.498001, - -281.440002, 7.500000, -176.289001, - -281.440002, 0.000000, -176.289001, - -281.406006, 7.500000, -177.190002, - -281.406006, 0.000000, -177.190002, - -281.634003, 7.500000, -177.936005, - -281.634003, 0.000000, -177.936005, - -282.209015, 7.500000, -178.470001, - -282.209015, 0.000000, -178.470001, - -279.380005, 7.500000, -183.268997, - -279.380005, 0.000000, -183.268997, - -271.135010, 7.500000, -178.660004, - -271.135010, 0.000000, -178.660004, - -274.036987, 7.500000, -173.393997, - -274.036987, 0.000000, -173.393997, - -274.867004, 7.500000, -173.550003, - -274.867004, 0.000000, -173.550003, - -275.716003, 7.500000, -173.350006, - -275.716003, 0.000000, -173.350006, - -276.324005, 7.500000, -172.714996, - -276.324005, 0.000000, -172.714996, - -276.605011, 7.500000, -171.979996, - -276.605011, 0.000000, -171.979996, - -276.592010, 7.500000, -170.990005, - -276.592010, 0.000000, -170.990005, - -276.230988, 7.500000, -170.455002, - -276.230988, 0.000000, -170.455002, - -275.835999, 7.500000, -170.121002, - -275.835999, 0.000000, -170.121002, - -265.778992, 7.500000, -164.031998, - -265.778992, 0.000000, -164.031998, - -256.216003, 7.500000, -180.774994, - -256.216003, 0.000000, -180.774994, - -234.229004, 7.500000, -163.830994, - -234.229004, 0.000000, -163.830994, - -260.615997, 7.500000, -132.460999, - -260.615997, 0.000000, -132.460999, - -262.066986, 7.500000, -133.695999, - -262.066986, 0.000000, -133.695999, - -273.315002, 7.500000, -120.515999, - -273.315002, 0.000000, -120.515999, - -257.205994, 7.500000, -106.766998, - -257.205994, 0.000000, -106.766998, - -245.964996, 7.500000, -119.947998, - -245.964996, 0.000000, -119.947998, - -249.134995, 7.500000, -122.653000, - -249.134995, 0.000000, -122.653000, - -229.421005, 7.500000, -146.087006, - -212.408997, 7.500000, -166.313995, - -223.970993, 7.500000, -176.033005, - -223.970993, 0.000000, -176.033005, - -248.365997, 7.500000, -194.089005, - -248.365997, 0.000000, -194.089005, - -276.089996, 7.500000, -209.975006, - -276.089996, 0.000000, -209.975006, - -308.108002, 7.500000, -228.231995, - -308.108002, 0.000000, -228.231995, - -308.596008, 7.500000, -228.332993, - -308.596008, 0.000000, -228.332993, - 101.602997, 5.000000, 115.482002, - 101.602997, 4.700000, 115.482002, - 96.160004, 5.000000, 110.405998, - 96.160004, 4.700000, 110.405998, - 93.318001, 4.700000, 113.432999, - 98.767998, 4.700000, 118.510002, - 101.602997, 0.000000, 115.482002, - 114.750000, 5.000000, 101.400002, - 114.750000, 0.000000, 101.400002, - 109.306000, 5.000000, 96.313004, - 109.306000, 0.000000, 96.313004, - 96.160004, 0.000000, 110.405998, - -71.324997, 15.000000, 17.767000, - -71.324997, 0.000000, 17.767000, - -78.292999, 15.000000, 7.871000, - -62.993000, 15.000000, 122.361000, - -62.993000, 0.000000, 122.361000, - -53.563999, 15.000000, 113.055000, - -54.146000, 15.000000, 112.498001, - -58.779999, 15.000000, 108.045998, - -58.779999, 0.000000, 108.045998, - -51.537998, 7.500000, 96.469002, - -51.537998, 0.000000, 96.469002, - -50.575001, 7.500000, 92.773003, - -47.578999, 7.500000, 82.698997, - -50.067001, 7.500000, 81.852997, - -50.067001, 0.000000, 81.852997, - -58.779999, 7.500000, 108.045998, - -65.554001, 15.000000, 76.598999, - -65.554001, 0.000000, 76.598999, - -50.067001, 15.000000, 81.852997, - -65.554001, 7.500000, 76.598999, - -67.894997, 7.500000, 75.830002, - -73.905998, 7.500000, 93.508003, - -28.722000, 22.000000, 92.338997, - -22.235001, 22.000000, 78.068001, - -29.025999, 22.000000, 75.285004, - -29.025999, 0.000000, 75.285004, - -35.817001, 22.000000, 72.501999, - -42.283001, 22.000000, 86.683998, - -35.502499, 22.000000, 89.511497, - -35.502499, 0.000000, 89.511497, - -28.722000, 22.002426, 92.338997, - -22.235001, 22.004669, 78.068001, - -29.025999, 26.700001, 75.285004, - -35.817001, 22.008108, 72.501999, - -35.502499, 26.700001, 89.511497, - 130.973007, 21.299999, 150.524002, - 130.973007, 0.000000, 150.524002, - 128.572006, 21.299999, 153.307007, - 128.572006, 0.000000, 153.307007, - 123.696999, 21.299999, 149.311005, - 123.696999, 0.000000, 149.311005, - 115.852997, 21.299999, 141.328995, - 103.334999, 21.299999, 153.496002, - 109.947998, 21.299999, 160.074997, - 109.947998, 0.000000, 160.074997, - 111.105003, 21.299999, 161.222000, - 111.105003, 0.000000, 161.222000, - 121.042000, 21.299999, 172.419998, - 134.229004, 21.299999, 156.914001, - 136.195007, 21.299999, 154.598007, - 124.378998, 20.000000, 128.572998, - 122.166000, 20.000000, 131.432999, - 122.907997, 20.000000, 132.412994, - 118.126999, 20.000000, 137.009995, - 119.150002, 20.000000, 138.167999, - 115.852997, 20.000000, 141.328995, - 123.696999, 20.000000, 149.311005, - 128.572006, 20.000000, 153.307007, - 130.973007, 20.000000, 150.524002, - 99.677002, 6.500000, 171.440002, - 95.705002, 6.500000, 167.210007, - 85.139000, 6.500000, 179.565994, - 83.167000, 6.500000, 182.416000, - 83.167000, 0.000000, 182.416000, - 88.167999, 6.500000, 187.358002, - 188.983002, 20.000000, 201.628998, - 188.983002, 0.000000, 201.628998, - 204.871002, 20.000000, 175.414001, - 204.871002, 0.000000, 175.414001, - 195.770004, 20.000000, 169.537003, - 195.770004, 0.000000, 169.537003, - 195.048004, 20.000000, 170.783997, - 195.048004, 0.000000, 170.783997, - 176.852997, 20.000000, 221.643005, - 176.852997, 0.000000, 221.643005, - 204.871002, 7.500000, 175.414001, - 188.983002, 7.500000, 201.628998, - 176.852997, 7.500000, 221.643005, - 189.216995, 7.500000, 231.716995, - 189.216995, 0.000000, 231.716995, - 188.869003, 7.500000, 231.884003, - 188.869003, 0.000000, 231.884003, - 191.651001, 7.500000, 233.977005, - 191.651001, 0.000000, 233.977005, - 192.173004, 7.500000, 233.276001, - 192.173004, 0.000000, 233.276001, - 214.889008, 7.500000, 253.167007, - 214.889008, 0.000000, 253.167007, - 216.533997, 7.500000, 254.615005, - 216.533997, 0.000000, 254.615005, - 218.399002, 7.500000, 256.239990, - 218.399002, 0.000000, 256.239990, - 220.164993, 7.500000, 257.786987, - 220.164993, 0.000000, 257.786987, - 234.802994, 7.500000, 270.609985, - 234.802994, 0.000000, 270.609985, - 248.076996, 7.500000, 282.243011, - 248.076996, 0.000000, 282.243011, - 258.287994, 7.500000, 268.628998, - 258.287994, 0.000000, 268.628998, - 280.950012, 7.500000, 230.949005, - 280.950012, 0.000000, 230.949005, - 275.941986, 7.500000, 227.153000, - 275.941986, 0.000000, 227.153000, - 232.375000, 7.500000, 194.149002, - 232.375000, 0.000000, 194.149002, - 220.886993, 7.500000, 186.345001, - 220.886993, 0.000000, 186.345001, - 173.656006, 24.000000, -177.580002, - 173.656006, 0.000000, -177.580002, - 181.820999, 24.000000, -183.869995, - 181.820999, 0.000000, -183.869995, - 182.582993, 24.000000, -184.460007, - 182.582993, 0.000000, -184.460007, - 182.121994, 24.000000, -185.050003, - 182.121994, 0.000000, -185.050003, - 173.214996, 24.000000, -196.615997, - 173.214996, 0.000000, -196.615997, - 170.699997, 24.000000, -199.878006, - 170.699997, 0.000000, -199.878006, - 169.878006, 24.000000, -200.947006, - 169.878006, 0.000000, -200.947006, - 160.951004, 24.000000, -194.078003, - 160.951004, 0.000000, -194.078003, - 161.705994, 24.000000, -193.098007, - 161.705994, 0.000000, -193.098007, - 164.013000, 24.000000, -190.104004, - 164.013000, 0.000000, -190.104004, - 173.214996, 7.000000, -196.615997, - 182.121994, 7.000000, -185.050003, - 184.182007, 7.000000, -186.630997, - 184.182007, 0.000000, -186.630997, - 182.917999, 7.000000, -188.278000, - 182.917999, 0.000000, -188.278000, - 175.274002, 7.000000, -198.197006, - 175.274002, 0.000000, -198.197006, - 181.820999, 7.000000, -183.869995, - 173.656006, 7.000000, -177.580002, - 164.013000, 7.000000, -190.104004, - 159.184998, 7.000000, -184.393005, - 159.184998, 0.000000, -184.393005, - 166.100006, 7.000000, -175.376007, - 166.100006, 0.000000, -175.376007, - 167.697998, 7.000000, -174.429001, - 167.697998, 0.000000, -174.429001, - 169.537003, 7.000000, -173.828003, - 169.537003, 0.000000, -173.828003, - 171.416000, 7.000000, -173.794998, - 171.416000, 0.000000, -173.794998, - 173.569000, 7.000000, -174.317993, - 173.569000, 0.000000, -174.317993, - 183.826996, 7.000000, -179.317001, - 183.826996, 0.000000, -179.317001, - -152.479996, 10.000000, 161.610992, - -152.479996, 0.000000, 161.610992, - -146.641998, 10.000000, 165.563004, - -146.641998, 0.000000, 165.563004, - -139.098999, 10.000000, 155.389008, - -139.098999, 0.000000, 155.389008, - -138.009003, 10.000000, 156.223007, - -138.009003, 0.000000, 156.223007, - -137.727997, 10.000000, 155.822998, - -137.727997, 0.000000, 155.822998, - -132.190994, 10.000000, 147.496002, - -132.190994, 0.000000, 147.496002, - -132.190994, 10.000000, 147.485001, - -132.190994, 0.000000, 147.485001, - -131.949997, 10.000000, 147.128998, - -131.949997, 0.000000, 147.128998, - -139.600006, 10.000000, 142.042007, - -139.600006, 0.000000, 142.042007, - -142.375000, 10.000000, 146.371994, - -142.375000, 0.000000, 146.371994, - -146.199997, 10.000000, 152.705994, - -146.199997, 0.000000, 152.705994, - -146.621994, 10.000000, 153.328995, - -146.621994, 0.000000, 153.328995, - -147.423996, 10.000000, 154.464996, - -147.423996, 0.000000, 154.464996, - -124.220001, 7.500000, 152.238007, - -124.220001, 0.000000, 152.238007, - -130.779999, 7.500000, 147.863998, - -130.779999, 0.000000, 147.863998, - -130.906998, 7.500000, 148.063995, - -130.906998, 0.000000, 148.063995, - -130.867004, 7.500000, 148.085999, - -130.867004, 0.000000, 148.085999, - -136.832001, 7.500000, 157.125000, - -136.832001, 0.000000, 157.125000, - -138.009003, 7.500000, 156.223007, - -139.098999, 7.500000, 155.389008, - -146.641998, 7.500000, 165.563004, - -146.514999, 7.500000, 165.641006, - -146.514999, 0.000000, 165.641006, - -146.602005, 7.500000, 165.774002, - -146.602005, 0.000000, 165.774002, - -138.992004, 7.500000, 171.384995, - -138.992004, 0.000000, 171.384995, - -132.477997, 7.500000, 176.182007, - -132.477997, 0.000000, 176.182007, - -118.456001, 7.500000, 158.104996, - -118.456001, 0.000000, 158.104996, - -118.803001, 7.500000, 155.845001, - -118.803001, 0.000000, 155.845001, - 101.963997, 7.500000, -119.926003, - 101.963997, 0.000000, -119.926003, - 102.191002, 7.500000, -120.492996, - 102.191002, 0.000000, -120.492996, - 105.032997, 7.500000, -127.628998, - 105.032997, 0.000000, -127.628998, - 105.266998, 7.500000, -128.218994, - 105.266998, 0.000000, -128.218994, - 104.029999, 7.500000, -128.709000, - 104.029999, 0.000000, -128.709000, - 103.569000, 7.500000, -128.897995, - 103.569000, 0.000000, -128.897995, - 102.833000, 7.500000, -129.188004, - 102.833000, 0.000000, -129.188004, - 102.098000, 7.500000, -129.488007, - 102.098000, 0.000000, -129.488007, - 101.917000, 7.500000, -129.565994, - 101.917000, 0.000000, -129.565994, - 100.927002, 7.500000, -129.955994, - 100.927002, 0.000000, -129.955994, - 98.788002, 7.500000, -130.824005, - 98.788002, 0.000000, -130.824005, - 95.484001, 7.500000, -122.530998, - 95.484001, 0.000000, -122.530998, - 97.624001, 7.500000, -121.674004, - 97.624001, 0.000000, -121.674004, - 98.747002, 7.500000, -121.217003, - 98.747002, 0.000000, -121.217003, - 99.175003, 7.500000, -121.050003, - 99.175003, 0.000000, -121.050003, - 99.683998, 7.500000, -120.849998, - 99.683998, 0.000000, -120.849998, - 100.165001, 7.500000, -120.649002, - 100.165001, 0.000000, -120.649002, - 100.626999, 7.500000, -120.471001, - 100.626999, 0.000000, -120.471001, - 103.086998, 7.500000, -120.137001, - 103.086998, 0.000000, -120.137001, - 111.633003, 7.500000, -116.709000, - 111.633003, 0.000000, -116.709000, - 114.482002, 7.500000, -123.833000, - 114.482002, 0.000000, -123.833000, - 112.462997, 7.500000, -124.646004, - 112.462997, 0.000000, -124.646004, - 112.008003, 7.500000, -124.823997, - 112.008003, 0.000000, -124.823997, - 111.546997, 7.500000, -125.013000, - 111.546997, 0.000000, -125.013000, - 111.084999, 7.500000, -125.202003, - 111.084999, 0.000000, -125.202003, - 110.624001, 7.500000, -125.380997, - 110.624001, 0.000000, -125.380997, - 105.948997, 7.500000, -127.262001, - 105.948997, 0.000000, -127.262001, - 179.126007, 14.000000, 157.804001, - 179.126007, 13.700000, 157.804001, - 183.856995, 14.000000, 152.026993, - 183.856995, 13.700000, 152.026993, - 188.587997, 14.000000, 146.250000, - 188.587997, 13.700000, 146.250000, - 134.356003, 14.000000, 101.801003, - 134.356003, 13.700000, 101.801003, - 129.625000, 14.000000, 107.578499, - 129.625000, 13.700000, 107.578499, - 129.160004, 14.000000, 108.135002, - 129.160004, 13.700000, 108.135002, - 124.893997, 14.000000, 113.356003, - 124.893997, 13.700000, 113.356003, - 179.126007, 14.000311, 157.804001, - 183.856995, 20.000000, 152.026993, - 188.587997, 14.000311, 146.250000, - 129.625000, 20.000000, 107.578499, - 129.160004, 19.417305, 108.135002, - 124.893997, 14.000001, 113.356003, - 135.298996, 14.000000, 100.554001, - 135.298996, 13.700000, 100.554001, - 124.686996, 14.000000, 113.634003, - 124.686996, 13.700000, 113.634003, - 126.332001, 14.000000, 115.158997, - 126.332001, 13.700000, 115.158997, - 127.615997, 14.000000, 116.349998, - 127.615997, 13.700000, 116.349998, - 132.089005, 14.000000, 120.490997, - 132.089005, 13.700000, 120.490997, - 142.654999, 14.000000, 130.153000, - 142.654999, 13.700000, 130.153000, - 150.753006, 14.000000, 137.556000, - 150.753006, 13.700000, 137.556000, - 164.962997, 14.000000, 148.554001, - 164.962997, 13.700000, 148.554001, - 171.362000, 14.000000, 153.507004, - 171.362000, 13.700000, 153.507004, - 173.207993, 14.000000, 154.977005, - 173.207993, 13.700000, 154.977005, - 175.388000, 14.000000, 156.712997, - 175.388000, 13.700000, 156.712997, - 180.591003, 14.000000, 160.843002, - 180.591003, 13.700000, 160.843002, - 195.048004, 14.000000, 170.783997, - 195.048004, 13.700000, 170.783997, - 195.770004, 14.000000, 169.537003, - 195.770004, 13.700000, 169.537003, - 204.871002, 14.000000, 175.414001, - 204.871002, 13.700000, 175.414001, - 220.886993, 14.000000, 186.345001, - 220.886993, 13.700000, 186.345001, - 232.375000, 14.000000, 194.149002, - 232.375000, 13.700000, 194.149002, - 275.941986, 14.000000, 227.153000, - 275.941986, 13.700000, 227.153000, - 278.114990, 14.000000, 224.492996, - 278.114990, 13.700000, 224.492996, - 280.562988, 14.000000, 221.498993, - 280.562988, 13.700000, 221.498993, - 255.371994, 14.000000, 201.662003, - 255.371994, 13.700000, 201.662003, - 268.231995, 14.000000, 185.354996, - 268.231995, 13.700000, 185.354996, - 284.955994, 14.000000, 165.507004, - 284.955994, 13.700000, 165.507004, - 280.963989, 14.000000, 162.311996, - 280.963989, 13.700000, 162.311996, - 277.259003, 14.000000, 159.339996, - 277.259003, 13.700000, 159.339996, - 271.575012, 14.000000, 166.932007, - 271.575012, 13.700000, 166.932007, - 270.404999, 14.000000, 166.119003, - 270.404999, 13.700000, 166.119003, - 269.643005, 14.000000, 167.166000, - 269.643005, 13.700000, 167.166000, - 261.283997, 14.000000, 178.498001, - 261.283997, 13.700000, 178.498001, - 252.985001, 14.000000, 189.751999, - 252.985001, 13.700000, 189.751999, - 247.067001, 14.000000, 189.595993, - 247.067001, 13.700000, 189.595993, - 240.962006, 14.000000, 184.720001, - 240.962006, 13.700000, 184.720001, - 239.149002, 14.000000, 183.440002, - 239.149002, 13.700000, 183.440002, - 237.444000, 14.000000, 182.238007, - 237.444000, 13.700000, 182.238007, - 226.899002, 14.000000, 174.356995, - 226.899002, 13.700000, 174.356995, - 221.367996, 14.000000, 170.227005, - 221.367996, 13.700000, 170.227005, - 217.089005, 14.000000, 167.020996, - 217.089005, 13.700000, 167.020996, - 213.697998, 14.000000, 164.483002, - 213.697998, 13.700000, 164.483002, - 209.772995, 14.000000, 161.554993, - 209.772995, 13.700000, 161.554993, - 207.112000, 14.000000, 159.563004, - 207.112000, 13.700000, 159.563004, - 203.688004, 14.000000, 157.003006, - 203.688004, 13.700000, 157.003006, - 198.966995, 14.000000, 153.106995, - 198.966995, 13.700000, 153.106995, - 197.007004, 14.000000, 151.492996, - 197.007004, 13.700000, 151.492996, - 188.962997, 14.000000, 144.847000, - 188.962997, 13.700000, 144.847000, - 186.703003, 14.000000, 142.988007, - 186.703003, 13.700000, 142.988007, - 181.024994, 14.000000, 138.289993, - 181.024994, 13.700000, 138.289993, - 139.345001, 14.000000, 103.893997, - 139.345001, 13.700000, 103.893997, - -162.566879, 0.000000, -42.736065, - -161.684143, 0.000000, -42.266209, - -162.613861, 0.000000, -42.647793, - -161.731125, 0.000000, -42.177933, - -162.613861, 2.000000, -42.647793, - -161.731125, 2.000000, -42.177933, - -162.566879, 2.000000, -42.736065, - -161.684143, 2.000000, -42.266209, - 186.349350, 0.000000, 142.631027, - 187.120331, 0.000000, 143.267883, - 186.285660, 0.000000, 142.708130, - 187.056656, 0.000000, 143.344971, - 186.285660, 2.000000, 142.708130, - 187.056656, 2.000000, 143.344971, - 186.349350, 2.000000, 142.631027, - 187.120331, 2.000000, 143.267883, - 134.014008, 0.000000, 99.146004, - 133.014008, 0.000000, 99.146004, - 134.014008, 0.000000, 99.045998, - 133.014008, 0.000000, 99.045998, - 134.014008, 2.000000, 99.045998, - 133.014008, 2.000000, 99.045998, - 134.014008, 2.000000, 99.146004, - 133.014008, 2.000000, 99.146004, - 135.832001, 0.000000, 86.366997, - 134.832001, 0.000000, 86.366997, - 135.832001, 0.000000, 86.266998, - 134.832001, 0.000000, 86.266998, - 135.832001, 2.000000, 86.266998, - 134.832001, 2.000000, 86.266998, - 135.832001, 2.000000, 86.366997, - 134.832001, 2.000000, 86.366997, - 163.360489, 0.000000, 50.172497, - 162.620819, 0.000000, 50.845470, - 163.293182, 0.000000, 50.098530, - 162.553513, 0.000000, 50.771503, - 163.293182, 2.000000, 50.098530, - 162.553513, 2.000000, 50.771503, - 163.360489, 2.000000, 50.172497, - 162.620819, 2.000000, 50.845470, - 239.528732, 0.000000, 183.769104, - 238.711624, 0.000000, 183.192612, - 239.586380, 0.000000, 183.687393, - 238.769272, 0.000000, 183.110901, - 239.586380, 2.000000, 183.687393, - 238.769272, 2.000000, 183.110901, - 239.528732, 2.000000, 183.769104, - 238.711624, 2.000000, 183.192612, - 207.482422, 0.000000, 159.902542, - 206.681671, 0.000000, 159.303528, - 207.542328, 0.000000, 159.822464, - 206.741577, 0.000000, 159.223465, - 207.542328, 2.000000, 159.822464, - 206.741577, 2.000000, 159.223465, - 207.482422, 2.000000, 159.902542, - 206.681671, 2.000000, 159.303528, - 261.621033, 0.000000, 178.125290, - 261.027466, 0.000000, 178.930069, - 261.540527, 0.000000, 178.065933, - 260.946991, 0.000000, 178.870712, - 261.540527, 2.000000, 178.065933, - 260.946991, 2.000000, 178.870712, - 261.621033, 2.000000, 178.125290, - 261.027466, 2.000000, 178.930069, - 227.269623, 0.000000, 174.696320, - 226.468521, 0.000000, 174.097794, - 227.329483, 0.000000, 174.616211, - 226.528381, 0.000000, 174.017685, - 227.329483, 2.000000, 174.616211, - 226.528381, 2.000000, 174.017685, - 227.269623, 2.000000, 174.696320, - 226.468521, 2.000000, 174.097794, - 221.738480, 0.000000, 170.566483, - 220.937637, 0.000000, 169.967606, - 221.798370, 0.000000, 170.486389, - 220.997528, 0.000000, 169.887527, - 221.798370, 2.000000, 170.486389, - 220.997528, 2.000000, 169.887527, - 221.738480, 2.000000, 170.566483, - 220.937637, 2.000000, 169.967606, - 217.459244, 0.000000, 167.360733, - 216.658813, 0.000000, 166.761307, - 217.519180, 0.000000, 167.280701, - 216.718765, 0.000000, 166.681259, - 217.519180, 2.000000, 167.280701, - 216.718765, 2.000000, 166.681259, - 217.459244, 2.000000, 167.360733, - 216.658813, 2.000000, 166.761307, - 214.068619, 0.000000, 164.822311, - 213.267517, 0.000000, 164.223785, - 214.128479, 0.000000, 164.742203, - 213.327377, 0.000000, 164.143677, - 214.128479, 2.000000, 164.742203, - 213.327377, 2.000000, 164.143677, - 214.068619, 2.000000, 164.822311, - 213.267517, 2.000000, 164.223785 - ], - "parts": [ - { - "id": "shape1_part1", - "type": "TRIANGLES", - "indices": [ - 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4, - 4, 5, 6, 5, 7, 6, 6, 7, 8, 7, 9, 8, - 8, 9, 10, 9, 11, 10, 10, 11, 12, 11, 13, 12, - 12, 13, 14, 13, 15, 14, 14, 15, 16, 15, 17, 16, - 16, 17, 18, 17, 19, 18, 18, 19, 20, 19, 21, 20, - 20, 21, 22, 21, 23, 22, 22, 23, 24, 23, 25, 24, - 24, 25, 26, 25, 27, 26, 26, 27, 28, 27, 29, 28, - 28, 29, 30, 29, 31, 30, 30, 31, 32, 31, 33, 32, - 32, 33, 34, 33, 35, 34, 34, 35, 36, 35, 37, 36, - 36, 37, 38, 37, 39, 38, 38, 39, 40, 39, 41, 40, - 40, 41, 42, 41, 43, 42, 42, 43, 44, 43, 45, 44, - 44, 45, 46, 45, 47, 46, 46, 47, 48, 47, 49, 48, - 48, 49, 50, 49, 51, 50, 50, 51, 52, 51, 53, 52, - 52, 53, 54, 53, 55, 54, 54, 55, 56, 55, 57, 56, - 56, 57, 58, 57, 59, 58, 58, 59, 60, 59, 61, 60, - 60, 61, 62, 61, 63, 62, 62, 63, 64, 63, 65, 64, - 64, 65, 66, 65, 67, 66, 66, 67, 68, 67, 69, 68, - 68, 69, 70, 69, 71, 70, 70, 71, 72, 71, 73, 72, - 72, 73, 74, 73, 75, 74, 74, 75, 76, 75, 77, 76, - 76, 77, 78, 77, 79, 78, 78, 79, 80, 79, 81, 80, - 80, 81, 82, 81, 83, 82, 82, 83, 84, 83, 85, 84, - 84, 85, 86, 85, 87, 86, 86, 87, 88, 87, 89, 88, - 88, 89, 90, 89, 91, 90, 90, 91, 0, 91, 1, 0, - 0, 0, 2, 0, 2, 2, 2, 2, 4, 2, 4, 4, - 4, 4, 6, 4, 6, 6, 6, 6, 8, 6, 8, 8, - 8, 8, 10, 8, 10, 10, 10, 10, 12, 10, 12, 12, - 12, 12, 14, 12, 14, 14, 14, 14, 16, 14, 16, 16, - 16, 16, 18, 16, 18, 18, 18, 18, 20, 18, 20, 20, - 20, 20, 22, 20, 22, 22, 22, 22, 24, 22, 24, 24, - 24, 24, 26, 24, 26, 26, 26, 26, 28, 26, 28, 28, - 28, 28, 30, 28, 30, 30, 30, 30, 32, 30, 32, 32, - 32, 32, 34, 32, 34, 34, 34, 34, 36, 34, 36, 36, - 36, 36, 38, 36, 38, 38, 38, 38, 40, 38, 40, 40, - 40, 40, 42, 40, 42, 42, 42, 42, 44, 42, 44, 44, - 44, 44, 46, 44, 46, 46, 46, 46, 48, 46, 48, 48, - 48, 48, 50, 48, 50, 50, 50, 50, 52, 50, 52, 52, - 52, 52, 54, 52, 54, 54, 54, 54, 56, 54, 56, 56, - 56, 56, 58, 56, 58, 58, 58, 58, 60, 58, 60, 60, - 60, 60, 62, 60, 62, 62, 62, 62, 64, 62, 64, 64, - 64, 64, 66, 64, 66, 66, 66, 66, 68, 66, 68, 68, - 68, 68, 70, 68, 70, 70, 70, 70, 72, 70, 72, 72, - 72, 72, 74, 72, 74, 74, 74, 74, 76, 74, 76, 76, - 76, 76, 78, 76, 78, 78, 78, 78, 80, 78, 80, 80, - 80, 80, 82, 80, 82, 82, 82, 82, 84, 82, 84, 84, - 84, 84, 86, 84, 86, 86, 86, 86, 88, 86, 88, 88, - 88, 88, 90, 88, 90, 90, 90, 90, 0, 90, 0, 0, - 92, 93, 94, 93, 95, 94, 94, 95, 96, 95, 97, 96, - 96, 97, 98, 97, 99, 98, 98, 99, 100, 99, 101, 100, - 100, 101, 102, 101, 103, 102, 102, 103, 104, 103, 105, 104, - 104, 105, 106, 105, 107, 106, 106, 107, 108, 107, 109, 108, - 108, 109, 92, 109, 93, 92, 92, 92, 94, 92, 94, 94, - 94, 94, 96, 94, 96, 96, 96, 96, 98, 96, 98, 98, - 98, 98, 100, 98, 100, 100, 100, 100, 102, 100, 102, 102, - 102, 102, 104, 102, 104, 104, 104, 104, 106, 104, 106, 106, - 106, 106, 108, 106, 108, 108, 108, 108, 92, 108, 92, 92, - 110, 111, 112, 111, 113, 112, 112, 113, 114, 113, 115, 114, - 114, 115, 116, 115, 117, 116, 116, 117, 118, 117, 119, 118, - 118, 119, 120, 119, 121, 120, 120, 121, 110, 121, 111, 110, - 110, 110, 112, 110, 112, 112, 112, 112, 114, 112, 114, 114, - 114, 114, 116, 114, 116, 116, 116, 116, 118, 116, 118, 118, - 118, 118, 120, 118, 120, 120, 120, 120, 110, 120, 110, 110, - 142, 143, 144, 143, 145, 144, 144, 145, 146, 145, 147, 146, - 146, 147, 148, 147, 149, 148, 148, 149, 150, 149, 151, 150, - 150, 151, 152, 151, 153, 152, 152, 153, 154, 153, 155, 154, - 154, 155, 156, 155, 157, 156, 156, 157, 158, 157, 159, 158, - 158, 159, 142, 159, 143, 142, 142, 142, 144, 142, 144, 144, - 144, 144, 146, 144, 146, 146, 146, 146, 148, 146, 148, 148, - 148, 148, 150, 148, 150, 150, 150, 150, 152, 150, 152, 152, - 152, 152, 154, 152, 154, 154, 154, 154, 156, 154, 156, 156, - 156, 156, 158, 156, 158, 158, 158, 158, 142, 158, 142, 142, - 160, 161, 162, 161, 163, 162, 162, 163, 164, 163, 165, 164, - 164, 165, 166, 165, 167, 166, 166, 167, 168, 167, 169, 168, - 168, 169, 170, 169, 171, 170, 170, 171, 172, 171, 173, 172, - 172, 173, 174, 173, 175, 174, 174, 175, 176, 175, 177, 176, - 176, 177, 178, 177, 179, 178, 178, 179, 180, 179, 181, 180, - 180, 181, 182, 181, 183, 182, 182, 183, 184, 183, 185, 184, - 184, 185, 186, 185, 187, 186, 186, 187, 188, 187, 189, 188, - 188, 189, 190, 189, 191, 190, 190, 191, 192, 191, 193, 192, - 192, 193, 194, 193, 195, 194, 194, 195, 196, 195, 197, 196, - 196, 197, 198, 197, 199, 198, 198, 199, 160, 199, 161, 160, - 160, 160, 162, 160, 162, 162, 162, 162, 164, 162, 164, 164, - 164, 164, 166, 164, 166, 166, 166, 166, 168, 166, 168, 168, - 168, 168, 170, 168, 170, 170, 170, 170, 172, 170, 172, 172, - 172, 172, 174, 172, 174, 174, 174, 174, 176, 174, 176, 176, - 176, 176, 178, 176, 178, 178, 178, 178, 180, 178, 180, 180, - 180, 180, 182, 180, 182, 182, 182, 182, 184, 182, 184, 184, - 184, 184, 186, 184, 186, 186, 186, 186, 188, 186, 188, 188, - 188, 188, 190, 188, 190, 190, 190, 190, 192, 190, 192, 192, - 192, 192, 194, 192, 194, 194, 194, 194, 196, 194, 196, 196, - 196, 196, 198, 196, 198, 198, 198, 198, 160, 198, 160, 160, - 200, 143, 201, 143, 159, 201, 201, 159, 202, 159, 157, 202, - 202, 157, 203, 157, 155, 203, 203, 155, 204, 155, 153, 204, - 204, 153, 205, 153, 151, 205, 205, 151, 206, 151, 149, 206, - 206, 149, 207, 149, 147, 207, 207, 147, 208, 147, 145, 208, - 208, 145, 200, 145, 143, 200, 200, 200, 201, 200, 201, 201, - 201, 201, 202, 201, 202, 202, 202, 202, 203, 202, 203, 203, - 203, 203, 204, 203, 204, 204, 204, 204, 205, 204, 205, 205, - 205, 205, 206, 205, 206, 206, 206, 206, 207, 206, 207, 207, - 207, 207, 208, 207, 208, 208, 208, 208, 200, 208, 200, 200, - 209, 210, 211, 210, 212, 211, 211, 212, 213, 212, 214, 213, - 213, 214, 215, 214, 216, 215, 215, 216, 217, 216, 218, 217, - 217, 218, 219, 218, 220, 219, 219, 220, 221, 220, 222, 221, - 221, 222, 223, 222, 224, 223, 223, 224, 225, 224, 226, 225, - 225, 226, 227, 226, 228, 227, 227, 228, 229, 228, 230, 229, - 229, 230, 209, 230, 210, 209, 209, 209, 211, 209, 211, 211, - 211, 211, 213, 211, 213, 213, 213, 213, 215, 213, 215, 215, - 215, 215, 217, 215, 217, 217, 217, 217, 219, 217, 219, 219, - 219, 219, 221, 219, 221, 221, 221, 221, 223, 221, 223, 223, - 223, 223, 225, 223, 225, 225, 225, 225, 227, 225, 227, 227, - 227, 227, 229, 227, 229, 229, 229, 229, 209, 229, 209, 209, - 231, 232, 32, 232, 33, 32, 32, 33, 30, 33, 31, 30, - 30, 31, 28, 31, 29, 28, 28, 29, 26, 29, 27, 26, - 26, 27, 233, 27, 234, 233, 233, 234, 235, 234, 236, 235, - 235, 236, 237, 236, 238, 237, 237, 238, 239, 238, 240, 239, - 239, 240, 241, 240, 242, 241, 241, 242, 243, 242, 244, 243, - 243, 244, 245, 244, 246, 245, 245, 246, 247, 246, 248, 247, - 247, 248, 249, 248, 250, 249, 249, 250, 251, 250, 252, 251, - 251, 252, 253, 252, 254, 253, 253, 254, 255, 254, 256, 255, - 255, 256, 231, 256, 232, 231, 231, 231, 32, 231, 32, 32, - 32, 32, 30, 32, 30, 30, 30, 30, 28, 30, 28, 28, - 28, 28, 26, 28, 26, 26, 26, 26, 233, 26, 233, 233, - 233, 233, 235, 233, 235, 235, 235, 235, 237, 235, 237, 237, - 237, 237, 239, 237, 239, 239, 239, 239, 241, 239, 241, 241, - 241, 241, 243, 241, 243, 243, 243, 243, 245, 243, 245, 245, - 245, 245, 247, 245, 247, 247, 247, 247, 249, 247, 249, 249, - 249, 249, 251, 249, 251, 251, 251, 251, 253, 251, 253, 253, - 253, 253, 255, 253, 255, 255, 255, 255, 231, 255, 231, 231, - 257, 258, 259, 258, 260, 259, 259, 260, 261, 260, 262, 261, - 261, 262, 263, 262, 264, 263, 263, 264, 265, 264, 266, 265, - 265, 266, 267, 266, 268, 267, 267, 268, 269, 268, 270, 269, - 269, 270, 271, 270, 272, 271, 271, 272, 257, 272, 258, 257, - 257, 257, 259, 257, 259, 259, 259, 259, 261, 259, 261, 261, - 261, 261, 263, 261, 263, 263, 263, 263, 265, 263, 265, 265, - 265, 265, 267, 265, 267, 267, 267, 267, 269, 267, 269, 269, - 269, 269, 271, 269, 271, 271, 271, 271, 257, 271, 257, 257, - 273, 274, 275, 274, 276, 275, 275, 276, 277, 276, 278, 277, - 277, 278, 279, 278, 280, 279, 279, 280, 273, 280, 274, 273, - 273, 273, 275, 273, 275, 275, 275, 275, 277, 275, 277, 277, - 277, 277, 279, 277, 279, 279, 279, 279, 273, 279, 273, 273, - 281, 282, 283, 282, 284, 283, 283, 284, 285, 284, 286, 285, - 285, 286, 287, 286, 288, 287, 287, 288, 289, 288, 290, 289, - 289, 290, 281, 290, 282, 281, 281, 281, 283, 281, 283, 283, - 283, 283, 285, 283, 285, 285, 285, 285, 287, 285, 287, 287, - 287, 287, 289, 287, 289, 289, 289, 289, 281, 289, 281, 281, - 291, 292, 293, 292, 294, 293, 293, 294, 295, 294, 296, 295, - 295, 296, 297, 296, 298, 297, 297, 298, 299, 298, 300, 299, - 299, 300, 301, 300, 302, 301, 301, 302, 303, 302, 304, 303, - 303, 304, 291, 304, 292, 291, 291, 291, 293, 291, 293, 293, - 293, 293, 295, 293, 295, 295, 295, 295, 297, 295, 297, 297, - 297, 297, 299, 297, 299, 299, 299, 299, 301, 299, 301, 301, - 301, 301, 303, 301, 303, 303, 303, 303, 291, 303, 291, 291, - 305, 306, 307, 306, 308, 307, 307, 308, 309, 308, 284, 309, - 309, 284, 310, 284, 282, 310, 310, 282, 305, 282, 306, 305, - 305, 305, 307, 305, 307, 307, 307, 307, 309, 307, 309, 309, - 309, 309, 310, 309, 310, 310, 310, 310, 305, 310, 305, 305, - 311, 312, 313, 312, 314, 313, 313, 314, 315, 314, 316, 315, - 315, 316, 317, 316, 318, 317, 317, 318, 311, 318, 312, 311, - 311, 311, 313, 311, 313, 313, 313, 313, 315, 313, 315, 315, - 315, 315, 317, 315, 317, 317, 317, 317, 311, 317, 311, 311, - 345, 346, 347, 346, 348, 347, 347, 348, 349, 348, 350, 349, - 349, 350, 351, 350, 352, 351, 351, 352, 353, 352, 354, 353, - 353, 354, 355, 354, 356, 355, 355, 356, 357, 356, 358, 357, - 357, 358, 359, 358, 360, 359, 359, 360, 361, 360, 362, 361, - 361, 362, 363, 362, 364, 363, 363, 364, 365, 364, 366, 365, - 365, 366, 367, 366, 368, 367, 367, 368, 345, 368, 346, 345, - 345, 345, 347, 345, 347, 347, 347, 347, 349, 347, 349, 349, - 349, 349, 351, 349, 351, 351, 351, 351, 353, 351, 353, 353, - 353, 353, 355, 353, 355, 355, 355, 355, 357, 355, 357, 357, - 357, 357, 359, 357, 359, 359, 359, 359, 361, 359, 361, 361, - 361, 361, 363, 361, 363, 363, 363, 363, 365, 363, 365, 365, - 365, 365, 367, 365, 367, 367, 367, 367, 345, 367, 345, 345, - 369, 360, 370, 360, 358, 370, 370, 358, 371, 358, 356, 371, - 371, 356, 372, 356, 354, 372, 372, 354, 373, 354, 352, 373, - 373, 352, 374, 352, 350, 374, 374, 350, 375, 350, 376, 375, - 375, 376, 377, 376, 378, 377, 377, 378, 379, 378, 380, 379, - 379, 380, 381, 380, 382, 381, 381, 382, 383, 382, 384, 383, - 383, 384, 385, 384, 386, 385, 385, 386, 387, 386, 388, 387, - 387, 388, 369, 388, 360, 369, 369, 369, 370, 369, 370, 370, - 370, 370, 371, 370, 371, 371, 371, 371, 372, 371, 372, 372, - 372, 372, 373, 372, 373, 373, 373, 373, 374, 373, 374, 374, - 374, 374, 375, 374, 375, 375, 375, 375, 377, 375, 377, 377, - 377, 377, 379, 377, 379, 379, 379, 379, 381, 379, 381, 381, - 381, 381, 383, 381, 383, 383, 383, 383, 385, 383, 385, 385, - 385, 385, 387, 385, 387, 387, 387, 387, 369, 387, 369, 369, - 389, 390, 391, 390, 392, 391, 391, 392, 393, 392, 394, 393, - 393, 394, 395, 394, 396, 395, 395, 396, 397, 396, 398, 397, - 397, 398, 399, 398, 400, 399, 399, 400, 389, 400, 390, 389, - 389, 389, 391, 389, 391, 391, 391, 391, 393, 391, 393, 393, - 393, 393, 395, 393, 395, 395, 395, 395, 397, 395, 397, 397, - 397, 397, 399, 397, 399, 399, 399, 399, 389, 399, 389, 389, - 401, 402, 403, 402, 404, 403, 403, 404, 405, 404, 406, 405, - 405, 406, 407, 406, 408, 407, 407, 408, 409, 408, 410, 409, - 409, 410, 411, 410, 412, 411, 411, 412, 413, 412, 414, 413, - 413, 414, 415, 414, 416, 415, 415, 416, 401, 416, 402, 401, - 401, 401, 403, 401, 403, 403, 403, 403, 405, 403, 405, 405, - 405, 405, 407, 405, 407, 407, 407, 407, 409, 407, 409, 409, - 409, 409, 411, 409, 411, 411, 411, 411, 413, 411, 413, 413, - 413, 413, 415, 413, 415, 415, 415, 415, 401, 415, 401, 401, - 417, 418, 419, 418, 420, 419, 419, 420, 421, 420, 422, 421, - 421, 422, 423, 422, 424, 423, 423, 424, 425, 424, 426, 425, - 425, 426, 427, 426, 428, 427, 427, 428, 429, 428, 430, 429, - 429, 430, 431, 430, 432, 431, 431, 432, 433, 432, 434, 433, - 433, 434, 417, 434, 418, 417, 417, 417, 419, 417, 419, 419, - 419, 419, 421, 419, 421, 421, 421, 421, 423, 421, 423, 423, - 423, 423, 425, 423, 425, 425, 425, 425, 427, 425, 427, 427, - 427, 427, 429, 427, 429, 429, 429, 429, 431, 429, 431, 431, - 431, 431, 433, 431, 433, 433, 433, 433, 417, 433, 417, 417, - 435, 430, 436, 430, 437, 436, 436, 437, 438, 437, 439, 438, - 438, 439, 440, 439, 441, 440, 440, 441, 442, 441, 443, 442, - 442, 443, 444, 443, 445, 444, 444, 445, 446, 445, 447, 446, - 446, 447, 448, 447, 418, 448, 448, 418, 449, 418, 434, 449, - 449, 434, 450, 434, 432, 450, 450, 432, 435, 432, 430, 435, - 435, 435, 436, 435, 436, 436, 436, 436, 438, 436, 438, 438, - 438, 438, 440, 438, 440, 440, 440, 440, 442, 440, 442, 442, - 442, 442, 444, 442, 444, 444, 444, 444, 446, 444, 446, 446, - 446, 446, 448, 446, 448, 448, 448, 448, 449, 448, 449, 449, - 449, 449, 450, 449, 450, 450, 450, 450, 435, 450, 435, 435, - 451, 420, 452, 420, 453, 452, 452, 453, 454, 453, 455, 454, - 454, 455, 456, 455, 457, 456, 456, 457, 458, 457, 459, 458, - 458, 459, 460, 459, 461, 460, 460, 461, 462, 461, 463, 462, - 462, 463, 464, 463, 465, 464, 464, 465, 466, 465, 467, 466, - 466, 467, 468, 467, 469, 468, 468, 469, 470, 469, 471, 470, - 470, 471, 472, 471, 473, 472, 472, 473, 474, 473, 439, 474, - 474, 439, 475, 439, 437, 475, 475, 437, 476, 437, 430, 476, - 476, 430, 477, 430, 428, 477, 477, 428, 478, 428, 426, 478, - 478, 426, 479, 426, 424, 479, 479, 424, 480, 424, 422, 480, - 480, 422, 451, 422, 420, 451, 451, 451, 452, 451, 452, 452, - 452, 452, 454, 452, 454, 454, 454, 454, 456, 454, 456, 456, - 456, 456, 458, 456, 458, 458, 458, 458, 460, 458, 460, 460, - 460, 460, 462, 460, 462, 462, 462, 462, 464, 462, 464, 464, - 464, 464, 466, 464, 466, 466, 466, 466, 468, 466, 468, 468, - 468, 468, 470, 468, 470, 470, 470, 470, 472, 470, 472, 472, - 472, 472, 474, 472, 474, 474, 474, 474, 475, 474, 475, 475, - 475, 475, 476, 475, 476, 476, 476, 476, 477, 476, 477, 477, - 477, 477, 478, 477, 478, 478, 478, 478, 479, 478, 479, 479, - 479, 479, 480, 479, 480, 480, 480, 480, 451, 480, 451, 451, - 295, 296, 293, 296, 294, 293, 293, 294, 481, 294, 482, 481, - 481, 482, 483, 482, 484, 483, 483, 484, 295, 484, 296, 295, - 295, 295, 293, 295, 293, 293, 293, 293, 481, 293, 481, 481, - 481, 481, 483, 481, 483, 483, 483, 483, 295, 483, 295, 295, - 485, 486, 487, 486, 488, 487, 487, 488, 303, 488, 304, 303, - 303, 304, 301, 304, 302, 301, 301, 302, 299, 302, 300, 299, - 299, 300, 297, 300, 298, 297, 297, 298, 485, 298, 486, 485, - 485, 485, 487, 485, 487, 487, 487, 487, 303, 487, 303, 303, - 303, 303, 301, 303, 301, 301, 301, 301, 299, 301, 299, 299, - 299, 299, 297, 299, 297, 297, 297, 297, 485, 297, 485, 485, - 489, 490, 491, 490, 492, 491, 491, 492, 493, 492, 494, 493, - 493, 494, 495, 494, 496, 495, 495, 496, 489, 496, 490, 489, - 489, 489, 491, 489, 491, 491, 491, 491, 493, 491, 493, 493, - 493, 493, 495, 493, 495, 495, 495, 495, 489, 495, 489, 489, - 495, 496, 493, 496, 494, 493, 493, 494, 497, 494, 498, 497, - 497, 498, 499, 498, 500, 499, 499, 500, 501, 500, 502, 501, - 501, 502, 495, 502, 496, 495, 495, 495, 493, 495, 493, 493, - 493, 493, 497, 493, 497, 497, 497, 497, 499, 497, 499, 499, - 499, 499, 501, 499, 501, 501, 501, 501, 495, 501, 495, 495, - 503, 504, 499, 504, 500, 499, 499, 500, 497, 500, 498, 497, - 497, 498, 505, 498, 506, 505, 505, 506, 507, 506, 508, 507, - 507, 508, 503, 508, 504, 503, 503, 503, 499, 503, 499, 499, - 499, 499, 497, 499, 497, 497, 497, 497, 505, 497, 505, 505, - 505, 505, 507, 505, 507, 507, 507, 507, 503, 507, 503, 503, - 509, 510, 511, 510, 512, 511, 511, 512, 513, 512, 514, 513, - 513, 514, 515, 514, 516, 515, 515, 516, 517, 516, 518, 517, - 517, 518, 519, 518, 520, 519, 519, 520, 521, 520, 522, 521, - 521, 522, 509, 522, 510, 509, 509, 509, 511, 509, 511, 511, - 511, 511, 513, 511, 513, 513, 513, 513, 515, 513, 515, 515, - 515, 515, 517, 515, 517, 517, 517, 517, 519, 517, 519, 519, - 519, 519, 521, 519, 521, 521, 521, 521, 509, 521, 509, 509, - 523, 524, 525, 524, 526, 525, 525, 526, 527, 526, 528, 527, - 527, 528, 529, 528, 530, 529, 529, 530, 531, 530, 532, 531, - 531, 532, 533, 532, 534, 533, 533, 534, 535, 534, 536, 535, - 535, 536, 537, 536, 538, 537, 537, 538, 539, 538, 540, 539, - 539, 540, 541, 540, 542, 541, 541, 542, 543, 542, 544, 543, - 543, 544, 545, 544, 546, 545, 545, 546, 547, 546, 548, 547, - 547, 548, 523, 548, 524, 523, 523, 523, 525, 523, 525, 525, - 525, 525, 527, 525, 527, 527, 527, 527, 529, 527, 529, 529, - 529, 529, 531, 529, 531, 531, 531, 531, 533, 531, 533, 533, - 533, 533, 535, 533, 535, 535, 535, 535, 537, 535, 537, 537, - 537, 537, 539, 537, 539, 539, 539, 539, 541, 539, 541, 541, - 541, 541, 543, 541, 543, 543, 543, 543, 545, 543, 545, 545, - 545, 545, 547, 545, 547, 547, 547, 547, 523, 547, 523, 523, - 549, 550, 551, 550, 552, 551, 551, 552, 553, 552, 554, 553, - 553, 554, 555, 554, 556, 555, 555, 556, 114, 556, 115, 114, - 114, 115, 112, 115, 113, 112, 112, 113, 110, 113, 111, 110, - 110, 111, 557, 111, 558, 557, 557, 558, 559, 558, 560, 559, - 559, 560, 561, 560, 562, 561, 561, 562, 563, 562, 564, 563, - 563, 564, 565, 564, 566, 565, 565, 566, 567, 566, 568, 567, - 567, 568, 569, 568, 570, 569, 569, 570, 571, 570, 572, 571, - 571, 572, 573, 572, 574, 573, 573, 574, 549, 574, 550, 549, - 549, 549, 551, 549, 551, 551, 551, 551, 553, 551, 553, 553, - 553, 553, 555, 553, 555, 555, 555, 555, 114, 555, 114, 114, - 114, 114, 112, 114, 112, 112, 112, 112, 110, 112, 110, 110, - 110, 110, 557, 110, 557, 557, 557, 557, 559, 557, 559, 559, - 559, 559, 561, 559, 561, 561, 561, 561, 563, 561, 563, 563, - 563, 563, 565, 563, 565, 565, 565, 565, 567, 565, 567, 567, - 567, 567, 569, 567, 569, 569, 569, 569, 571, 569, 571, 571, - 571, 571, 573, 571, 573, 573, 573, 573, 549, 573, 549, 549, - 575, 576, 577, 576, 578, 577, 577, 578, 579, 578, 580, 579, - 579, 580, 581, 580, 582, 581, 581, 582, 583, 582, 584, 583, - 583, 584, 585, 584, 586, 585, 585, 586, 587, 586, 588, 587, - 587, 588, 589, 588, 590, 589, 589, 590, 591, 590, 592, 591, - 591, 592, 593, 592, 594, 593, 593, 594, 595, 594, 596, 595, - 595, 596, 597, 596, 598, 597, 597, 598, 599, 598, 600, 599, - 599, 600, 601, 600, 602, 601, 601, 602, 603, 602, 604, 603, - 603, 604, 605, 604, 532, 605, 605, 532, 606, 532, 530, 606, - 606, 530, 575, 530, 576, 575, 575, 575, 577, 575, 577, 577, - 577, 577, 579, 577, 579, 579, 579, 579, 581, 579, 581, 581, - 581, 581, 583, 581, 583, 583, 583, 583, 585, 583, 585, 585, - 585, 585, 587, 585, 587, 587, 587, 587, 589, 587, 589, 589, - 589, 589, 591, 589, 591, 591, 591, 591, 593, 591, 593, 593, - 593, 593, 595, 593, 595, 595, 595, 595, 597, 595, 597, 597, - 597, 597, 599, 597, 599, 599, 599, 599, 601, 599, 601, 601, - 601, 601, 603, 601, 603, 603, 603, 603, 605, 603, 605, 605, - 605, 605, 606, 605, 606, 606, 606, 606, 575, 606, 575, 575, - 607, 608, 609, 608, 610, 609, 609, 610, 611, 610, 612, 611, - 611, 612, 613, 612, 614, 613, 613, 614, 581, 614, 582, 581, - 581, 582, 579, 582, 580, 579, 579, 580, 607, 580, 608, 607, - 607, 607, 609, 607, 609, 609, 609, 609, 611, 609, 611, 611, - 611, 611, 613, 611, 613, 613, 613, 613, 581, 613, 581, 581, - 581, 581, 579, 581, 579, 579, 579, 579, 607, 579, 607, 607, - 615, 616, 617, 616, 618, 617, 617, 618, 619, 618, 510, 619, - 619, 510, 620, 510, 522, 620, 620, 522, 621, 522, 520, 621, - 621, 520, 615, 520, 616, 615, 615, 615, 617, 615, 617, 617, - 617, 617, 619, 617, 619, 619, 619, 619, 620, 619, 620, 620, - 620, 620, 621, 620, 621, 621, 621, 621, 615, 621, 615, 615, - 622, 623, 624, 623, 534, 624, 624, 534, 605, 534, 532, 605, - 605, 532, 603, 532, 604, 603, 603, 604, 622, 604, 623, 622, - 622, 622, 624, 622, 624, 624, 624, 624, 605, 624, 605, 605, - 605, 605, 603, 605, 603, 603, 603, 603, 622, 603, 622, 622, - 625, 626, 627, 626, 628, 627, 627, 628, 629, 628, 630, 629, - 629, 630, 631, 630, 632, 631, 631, 632, 625, 632, 626, 625, - 625, 625, 627, 625, 627, 627, 627, 627, 629, 627, 629, 629, - 629, 629, 631, 629, 631, 631, 631, 631, 625, 631, 625, 625, - 633, 634, 635, 634, 538, 635, 635, 538, 636, 538, 536, 636, - 636, 536, 624, 536, 534, 624, 624, 534, 622, 534, 623, 622, - 622, 623, 637, 623, 638, 637, 637, 638, 639, 638, 640, 639, - 639, 640, 633, 640, 634, 633, 633, 633, 635, 633, 635, 635, - 635, 635, 636, 635, 636, 636, 636, 636, 624, 636, 624, 624, - 624, 624, 622, 624, 622, 622, 622, 622, 637, 622, 637, 637, - 637, 637, 639, 637, 639, 639, 639, 639, 633, 639, 633, 633, - 641, 642, 643, 642, 644, 643, 643, 644, 645, 644, 646, 645, - 645, 646, 647, 646, 542, 647, 647, 542, 648, 542, 540, 648, - 648, 540, 649, 540, 650, 649, 649, 650, 651, 650, 652, 651, - 651, 652, 653, 652, 654, 653, 653, 654, 655, 654, 656, 655, - 655, 656, 641, 656, 642, 641, 641, 641, 643, 641, 643, 643, - 643, 643, 645, 643, 645, 645, 645, 645, 647, 645, 647, 647, - 647, 647, 648, 647, 648, 648, 648, 648, 649, 648, 649, 649, - 649, 649, 651, 649, 651, 651, 651, 651, 653, 651, 653, 653, - 653, 653, 655, 653, 655, 655, 655, 655, 641, 655, 641, 641, - 668, 669, 670, 669, 671, 670, 670, 671, 672, 671, 673, 672, - 672, 673, 674, 673, 675, 674, 674, 675, 668, 675, 669, 668, - 668, 668, 670, 668, 670, 670, 670, 670, 672, 670, 672, 672, - 672, 672, 674, 672, 674, 674, 674, 674, 668, 674, 668, 668, - 120, 121, 118, 121, 119, 118, 118, 119, 676, 119, 677, 676, - 676, 677, 674, 677, 675, 674, 674, 675, 672, 675, 673, 672, - 672, 673, 120, 673, 121, 120, 120, 120, 118, 120, 118, 118, - 118, 118, 676, 118, 676, 676, 676, 676, 674, 676, 674, 674, - 674, 674, 672, 674, 672, 672, 672, 672, 120, 672, 120, 120, - 670, 671, 668, 671, 669, 668, 668, 669, 678, 669, 679, 678, - 678, 679, 680, 679, 681, 680, 680, 681, 682, 681, 683, 682, - 682, 683, 684, 683, 685, 684, 684, 685, 686, 685, 687, 686, - 686, 687, 670, 687, 671, 670, 670, 670, 668, 670, 668, 668, - 668, 668, 678, 668, 678, 678, 678, 678, 680, 678, 680, 680, - 680, 680, 682, 680, 682, 682, 682, 682, 684, 682, 684, 684, - 684, 684, 686, 684, 686, 686, 686, 686, 670, 686, 670, 670, - 688, 689, 690, 689, 691, 690, 690, 691, 692, 691, 693, 692, - 692, 693, 694, 693, 695, 694, 694, 695, 696, 695, 697, 696, - 696, 697, 698, 697, 699, 698, 698, 699, 700, 699, 701, 700, - 700, 701, 702, 701, 703, 702, 702, 703, 704, 703, 705, 704, - 704, 705, 688, 705, 689, 688, 688, 688, 690, 688, 690, 690, - 690, 690, 692, 690, 692, 692, 692, 692, 694, 692, 694, 694, - 694, 694, 696, 694, 696, 696, 696, 696, 698, 696, 698, 698, - 698, 698, 700, 698, 700, 700, 700, 700, 702, 700, 702, 702, - 702, 702, 704, 702, 704, 704, 704, 704, 688, 704, 688, 688, - 692, 693, 706, 693, 707, 706, 706, 707, 708, 707, 709, 708, - 708, 709, 710, 709, 711, 710, 710, 711, 712, 711, 713, 712, - 712, 713, 714, 713, 715, 714, 714, 715, 716, 715, 717, 716, - 716, 717, 718, 717, 93, 718, 718, 93, 719, 93, 109, 719, - 719, 109, 720, 109, 103, 720, 720, 103, 721, 103, 101, 721, - 721, 101, 694, 101, 695, 694, 694, 695, 692, 695, 693, 692, - 692, 692, 706, 692, 706, 706, 706, 706, 708, 706, 708, 708, - 708, 708, 710, 708, 710, 710, 710, 710, 712, 710, 712, 712, - 712, 712, 714, 712, 714, 714, 714, 714, 716, 714, 716, 716, - 716, 716, 718, 716, 718, 718, 718, 718, 719, 718, 719, 719, - 719, 719, 720, 719, 720, 720, 720, 720, 721, 720, 721, 721, - 721, 721, 694, 721, 694, 694, 694, 694, 692, 694, 692, 692, - 722, 723, 724, 723, 725, 724, 724, 725, 726, 725, 727, 726, - 726, 727, 728, 727, 729, 728, 728, 729, 730, 729, 731, 730, - 730, 731, 732, 731, 733, 732, 732, 733, 734, 733, 735, 734, - 734, 735, 736, 735, 737, 736, 736, 737, 738, 737, 739, 738, - 738, 739, 740, 739, 741, 740, 740, 741, 742, 741, 743, 742, - 742, 743, 744, 743, 745, 744, 744, 745, 746, 745, 747, 746, - 746, 747, 748, 747, 749, 748, 748, 749, 750, 749, 751, 750, - 750, 751, 752, 751, 753, 752, 752, 753, 754, 753, 755, 754, - 754, 755, 756, 755, 757, 756, 756, 757, 722, 757, 723, 722, - 722, 722, 724, 722, 724, 724, 724, 724, 726, 724, 726, 726, - 726, 726, 728, 726, 728, 728, 728, 728, 730, 728, 730, 730, - 730, 730, 732, 730, 732, 732, 732, 732, 734, 732, 734, 734, - 734, 734, 736, 734, 736, 736, 736, 736, 738, 736, 738, 738, - 738, 738, 740, 738, 740, 740, 740, 740, 742, 740, 742, 742, - 742, 742, 744, 742, 744, 744, 744, 744, 746, 744, 746, 746, - 746, 746, 748, 746, 748, 748, 748, 748, 750, 748, 750, 750, - 750, 750, 752, 750, 752, 752, 752, 752, 754, 752, 754, 754, - 754, 754, 756, 754, 756, 756, 756, 756, 722, 756, 722, 722, - 758, 759, 760, 759, 761, 760, 760, 761, 762, 761, 763, 762, - 762, 763, 764, 763, 765, 764, 764, 765, 766, 765, 767, 766, - 766, 767, 768, 767, 769, 768, 768, 769, 770, 769, 771, 770, - 770, 771, 772, 771, 773, 772, 772, 773, 774, 773, 775, 774, - 774, 775, 758, 775, 759, 758, 758, 758, 760, 758, 760, 760, - 760, 760, 762, 760, 762, 762, 762, 762, 764, 762, 764, 764, - 764, 764, 766, 764, 766, 766, 766, 766, 768, 766, 768, 768, - 768, 768, 770, 768, 770, 770, 770, 770, 772, 770, 772, 772, - 772, 772, 774, 772, 774, 774, 774, 774, 758, 774, 758, 758, - 776, 777, 770, 777, 771, 770, 770, 771, 768, 771, 769, 768, - 768, 769, 778, 769, 779, 778, 778, 779, 780, 779, 781, 780, - 780, 781, 782, 781, 783, 782, 782, 783, 784, 783, 785, 784, - 784, 785, 776, 785, 777, 776, 776, 776, 770, 776, 770, 770, - 770, 770, 768, 770, 768, 768, 768, 768, 778, 768, 778, 778, - 778, 778, 780, 778, 780, 780, 780, 780, 782, 780, 782, 782, - 782, 782, 784, 782, 784, 784, 784, 784, 776, 784, 776, 776, - 776, 777, 784, 777, 785, 784, 784, 785, 782, 785, 783, 782, - 782, 783, 780, 783, 781, 780, 780, 781, 786, 781, 787, 786, - 786, 787, 788, 787, 789, 788, 788, 789, 790, 789, 791, 790, - 790, 791, 792, 791, 793, 792, 792, 793, 794, 793, 795, 794, - 794, 795, 796, 795, 797, 796, 796, 797, 776, 797, 777, 776, - 776, 776, 784, 776, 784, 784, 784, 784, 782, 784, 782, 782, - 782, 782, 780, 782, 780, 780, 780, 780, 786, 780, 786, 786, - 786, 786, 788, 786, 788, 788, 788, 788, 790, 788, 790, 790, - 790, 790, 792, 790, 792, 792, 792, 792, 794, 792, 794, 794, - 794, 794, 796, 794, 796, 796, 796, 796, 776, 796, 776, 776, - 792, 793, 790, 793, 791, 790, 790, 791, 788, 791, 789, 788, - 788, 789, 786, 789, 787, 786, 786, 787, 780, 787, 781, 780, - 780, 781, 778, 781, 779, 778, 778, 779, 768, 779, 769, 768, - 768, 769, 766, 769, 767, 766, 766, 767, 764, 767, 765, 764, - 764, 765, 762, 765, 763, 762, 762, 763, 760, 763, 761, 760, - 760, 761, 758, 761, 759, 758, 758, 759, 798, 759, 799, 798, - 798, 799, 800, 799, 801, 800, 800, 801, 802, 801, 803, 802, - 802, 803, 804, 803, 805, 804, 804, 805, 806, 805, 807, 806, - 806, 807, 808, 807, 809, 808, 808, 809, 810, 809, 811, 810, - 810, 811, 812, 811, 813, 812, 812, 813, 814, 813, 815, 814, - 814, 815, 816, 815, 817, 816, 816, 817, 818, 817, 819, 818, - 818, 819, 820, 819, 821, 820, 820, 821, 822, 821, 823, 822, - 822, 823, 824, 823, 825, 824, 824, 825, 826, 825, 827, 826, - 826, 827, 828, 827, 829, 828, 828, 829, 830, 829, 831, 830, - 830, 831, 832, 831, 833, 832, 832, 833, 834, 833, 835, 834, - 834, 835, 836, 835, 837, 836, 836, 837, 838, 837, 839, 838, - 838, 839, 840, 839, 841, 840, 840, 841, 842, 841, 843, 842, - 842, 843, 844, 843, 845, 844, 844, 845, 846, 845, 847, 846, - 846, 847, 848, 847, 849, 848, 848, 849, 728, 849, 729, 728, - 728, 729, 726, 729, 727, 726, 726, 727, 724, 727, 725, 724, - 724, 725, 722, 725, 723, 722, 722, 723, 850, 723, 851, 850, - 850, 851, 792, 851, 793, 792, 792, 792, 790, 792, 790, 790, - 790, 790, 788, 790, 788, 788, 788, 788, 786, 788, 786, 786, - 786, 786, 780, 786, 780, 780, 780, 780, 778, 780, 778, 778, - 778, 778, 768, 778, 768, 768, 768, 768, 766, 768, 766, 766, - 766, 766, 764, 766, 764, 764, 764, 764, 762, 764, 762, 762, - 762, 762, 760, 762, 760, 760, 760, 760, 758, 760, 758, 758, - 758, 758, 798, 758, 798, 798, 798, 798, 800, 798, 800, 800, - 800, 800, 802, 800, 802, 802, 802, 802, 804, 802, 804, 804, - 804, 804, 806, 804, 806, 806, 806, 806, 808, 806, 808, 808, - 808, 808, 810, 808, 810, 810, 810, 810, 812, 810, 812, 812, - 812, 812, 814, 812, 814, 814, 814, 814, 816, 814, 816, 816, - 816, 816, 818, 816, 818, 818, 818, 818, 820, 818, 820, 820, - 820, 820, 822, 820, 822, 822, 822, 822, 824, 822, 824, 824, - 824, 824, 826, 824, 826, 826, 826, 826, 828, 826, 828, 828, - 828, 828, 830, 828, 830, 830, 830, 830, 832, 830, 832, 832, - 832, 832, 834, 832, 834, 834, 834, 834, 836, 834, 836, 836, - 836, 836, 838, 836, 838, 838, 838, 838, 840, 838, 840, 840, - 840, 840, 842, 840, 842, 842, 842, 842, 844, 842, 844, 844, - 844, 844, 846, 844, 846, 846, 846, 846, 848, 846, 848, 848, - 848, 848, 728, 848, 728, 728, 728, 728, 726, 728, 726, 726, - 726, 726, 724, 726, 724, 724, 724, 724, 722, 724, 722, 722, - 722, 722, 850, 722, 850, 850, 850, 850, 792, 850, 792, 792, - 852, 853, 854, 853, 855, 854, 854, 855, 856, 855, 857, 856, - 856, 857, 858, 857, 859, 858, 858, 859, 860, 859, 861, 860, - 860, 861, 862, 861, 863, 862, 862, 863, 864, 863, 865, 864, - 864, 865, 866, 865, 867, 866, 866, 867, 868, 867, 869, 868, - 868, 869, 870, 869, 871, 870, 870, 871, 852, 871, 853, 852, - 852, 852, 854, 852, 854, 854, 854, 854, 856, 854, 856, 856, - 856, 856, 858, 856, 858, 858, 858, 858, 860, 858, 860, 860, - 860, 860, 862, 860, 862, 862, 862, 862, 864, 862, 864, 864, - 864, 864, 866, 864, 866, 866, 866, 866, 868, 866, 868, 868, - 868, 868, 870, 868, 870, 870, 870, 870, 852, 870, 852, 852, - 864, 865, 862, 865, 863, 862, 862, 863, 872, 863, 873, 872, - 872, 873, 874, 873, 875, 874, 874, 875, 876, 875, 877, 876, - 876, 877, 878, 877, 879, 878, 878, 879, 880, 879, 881, 880, - 880, 881, 882, 881, 883, 882, 882, 883, 884, 883, 885, 884, - 884, 885, 886, 885, 887, 886, 886, 887, 888, 887, 889, 888, - 888, 889, 864, 889, 865, 864, 864, 864, 862, 864, 862, 862, - 862, 862, 872, 862, 872, 872, 872, 872, 874, 872, 874, 874, - 874, 874, 876, 874, 876, 876, 876, 876, 878, 876, 878, 878, - 878, 878, 880, 878, 880, 880, 880, 880, 882, 880, 882, 882, - 882, 882, 884, 882, 884, 884, 884, 884, 886, 884, 886, 886, - 886, 886, 888, 886, 888, 888, 888, 888, 864, 888, 864, 864, - 890, 891, 892, 891, 893, 892, 892, 893, 894, 893, 895, 894, - 894, 895, 896, 895, 897, 896, 896, 897, 898, 897, 899, 898, - 898, 899, 890, 899, 891, 890, 890, 890, 892, 890, 892, 892, - 892, 892, 894, 892, 894, 894, 894, 894, 896, 894, 896, 896, - 896, 896, 898, 896, 898, 898, 898, 898, 890, 898, 890, 890, - 900, 901, 902, 901, 903, 902, 902, 903, 904, 903, 905, 904, - 904, 905, 906, 905, 907, 906, 906, 907, 900, 907, 901, 900, - 900, 900, 902, 900, 902, 902, 902, 902, 904, 902, 904, 904, - 904, 904, 906, 904, 906, 906, 906, 906, 900, 906, 900, 900, - 908, 909, 910, 909, 911, 910, 910, 911, 912, 911, 163, 912, - 912, 163, 913, 163, 161, 913, 913, 161, 908, 161, 909, 908, - 908, 908, 910, 908, 910, 910, 910, 910, 912, 910, 912, 912, - 912, 912, 913, 912, 913, 913, 913, 913, 908, 913, 908, 908, - 914, 394, 915, 394, 889, 915, 915, 889, 916, 889, 887, 916, - 916, 887, 917, 887, 396, 917, 917, 396, 914, 396, 394, 914, - 914, 914, 915, 914, 915, 915, 915, 915, 916, 915, 916, 916, - 916, 916, 917, 916, 917, 917, 917, 917, 914, 917, 914, 914, - 918, 919, 920, 919, 921, 920, 920, 921, 900, 921, 901, 900, - 900, 901, 906, 901, 907, 906, 906, 907, 918, 907, 919, 918, - 918, 918, 920, 918, 920, 920, 920, 920, 900, 920, 900, 900, - 900, 900, 906, 900, 906, 906, 906, 906, 918, 906, 918, 918, - 910, 911, 908, 911, 909, 908, 908, 909, 922, 909, 923, 922, - 922, 923, 924, 923, 925, 924, 924, 925, 926, 925, 927, 926, - 926, 927, 910, 927, 911, 910, 910, 910, 908, 910, 908, 908, - 908, 908, 922, 908, 922, 922, 922, 922, 924, 922, 924, 924, - 924, 924, 926, 924, 926, 926, 926, 926, 910, 926, 910, 910, - 928, 929, 930, 929, 931, 930, 930, 931, 932, 931, 933, 932, - 932, 933, 934, 933, 935, 934, 934, 935, 904, 935, 905, 904, - 904, 905, 902, 905, 903, 902, 902, 903, 860, 903, 861, 860, - 860, 861, 858, 861, 859, 858, 858, 859, 936, 859, 937, 936, - 936, 937, 928, 937, 929, 928, 928, 928, 930, 928, 930, 930, - 930, 930, 932, 930, 932, 932, 932, 932, 934, 932, 934, 934, - 934, 934, 904, 934, 904, 904, 904, 904, 902, 904, 902, 902, - 902, 902, 860, 902, 860, 860, 860, 860, 858, 860, 858, 858, - 858, 858, 936, 858, 936, 936, 936, 936, 928, 936, 928, 928, - 918, 919, 938, 919, 939, 938, 938, 939, 940, 939, 941, 940, - 940, 941, 942, 941, 943, 942, 942, 943, 944, 943, 945, 944, - 944, 945, 946, 945, 947, 946, 946, 947, 948, 947, 949, 948, - 948, 949, 950, 949, 951, 950, 950, 951, 952, 951, 953, 952, - 952, 953, 954, 953, 955, 954, 954, 955, 956, 955, 957, 956, - 956, 957, 958, 957, 959, 958, 958, 959, 960, 959, 961, 960, - 960, 961, 962, 961, 963, 962, 962, 963, 964, 963, 965, 964, - 964, 965, 966, 965, 967, 966, 966, 967, 920, 967, 921, 920, - 920, 921, 918, 921, 919, 918, 918, 918, 938, 918, 938, 938, - 938, 938, 940, 938, 940, 940, 940, 940, 942, 940, 942, 942, - 942, 942, 944, 942, 944, 944, 944, 944, 946, 944, 946, 946, - 946, 946, 948, 946, 948, 948, 948, 948, 950, 948, 950, 950, - 950, 950, 952, 950, 952, 952, 952, 952, 954, 952, 954, 954, - 954, 954, 956, 954, 956, 956, 956, 956, 958, 956, 958, 958, - 958, 958, 960, 958, 960, 960, 960, 960, 962, 960, 962, 962, - 962, 962, 964, 962, 964, 964, 964, 964, 966, 964, 966, 966, - 966, 966, 920, 966, 920, 920, 920, 920, 918, 920, 918, 918, - 968, 969, 928, 969, 929, 928, 928, 929, 936, 929, 937, 936, - 936, 937, 970, 937, 971, 970, 970, 971, 972, 971, 973, 972, - 972, 973, 974, 973, 975, 974, 974, 975, 968, 975, 969, 968, - 968, 968, 928, 968, 928, 928, 928, 928, 936, 928, 936, 936, - 936, 936, 970, 936, 970, 970, 970, 970, 972, 970, 972, 972, - 972, 972, 974, 972, 974, 974, 974, 974, 968, 974, 968, 968, - 974, 975, 972, 975, 973, 972, 972, 973, 970, 973, 971, 970, - 970, 971, 852, 971, 853, 852, 852, 853, 870, 853, 871, 870, - 870, 871, 868, 871, 869, 868, 868, 869, 866, 869, 867, 866, - 866, 867, 976, 867, 977, 976, 976, 977, 978, 977, 979, 978, - 978, 979, 391, 979, 392, 391, 391, 392, 389, 392, 390, 389, - 389, 390, 974, 390, 975, 974, 974, 974, 972, 974, 972, 972, - 972, 972, 970, 972, 970, 970, 970, 970, 852, 970, 852, 852, - 852, 852, 870, 852, 870, 870, 870, 870, 868, 870, 868, 868, - 868, 868, 866, 868, 866, 866, 866, 866, 976, 866, 976, 976, - 976, 976, 978, 976, 978, 978, 978, 978, 391, 978, 391, 391, - 391, 391, 389, 391, 389, 389, 389, 389, 974, 389, 974, 974, - 399, 400, 397, 400, 398, 397, 397, 398, 980, 398, 981, 980, - 980, 981, 982, 981, 983, 982, 982, 983, 984, 983, 891, 984, - 984, 891, 985, 891, 899, 985, 985, 899, 986, 899, 987, 986, - 986, 987, 988, 987, 989, 988, 988, 989, 399, 989, 400, 399, - 399, 399, 397, 399, 397, 397, 397, 397, 980, 397, 980, 980, - 980, 980, 982, 980, 982, 982, 982, 982, 984, 982, 984, 984, - 984, 984, 985, 984, 985, 985, 985, 985, 986, 985, 986, 986, - 986, 986, 988, 986, 988, 988, 988, 988, 399, 988, 399, 399, - 990, 330, 991, 330, 992, 991, 991, 992, 993, 992, 994, 993, - 993, 994, 995, 994, 996, 995, 995, 996, 997, 996, 998, 997, - 997, 998, 999, 998, 332, 999, 999, 332, 990, 332, 330, 990, - 990, 990, 991, 990, 991, 991, 991, 991, 993, 991, 993, 993, - 993, 993, 995, 993, 995, 995, 995, 995, 997, 995, 997, 997, - 997, 997, 999, 997, 999, 999, 999, 999, 990, 999, 990, 990, - 997, 998, 995, 998, 996, 995, 995, 996, 1000, 996, 1001, 1000, - 1000, 1001, 930, 1001, 931, 930, 930, 931, 928, 931, 929, 928, - 928, 929, 968, 929, 969, 968, 968, 969, 997, 969, 998, 997, - 997, 997, 995, 997, 995, 995, 995, 995, 1000, 995, 1000, 1000, - 1000, 1000, 930, 1000, 930, 930, 930, 930, 928, 930, 928, 928, - 928, 928, 968, 928, 968, 968, 968, 968, 997, 968, 997, 997, - 1002, 1003, 1004, 1003, 1005, 1004, 1004, 1005, 1006, 1005, 1007, 1006, - 1006, 1007, 1008, 1007, 1009, 1008, 1008, 1009, 1010, 1009, 1011, 1010, - 1010, 1011, 1012, 1011, 1013, 1012, 1012, 1013, 1014, 1013, 1015, 1014, - 1014, 1015, 1016, 1015, 1017, 1016, 1016, 1017, 1018, 1017, 1019, 1018, - 1018, 1019, 1020, 1019, 1021, 1020, 1020, 1021, 1022, 1021, 1023, 1022, - 1022, 1023, 1024, 1023, 1025, 1024, 1024, 1025, 1026, 1025, 1027, 1026, - 1026, 1027, 1028, 1027, 1029, 1028, 1028, 1029, 1030, 1029, 1031, 1030, - 1030, 1031, 1002, 1031, 1003, 1002, 1002, 1002, 1004, 1002, 1004, 1004, - 1004, 1004, 1006, 1004, 1006, 1006, 1006, 1006, 1008, 1006, 1008, 1008, - 1008, 1008, 1010, 1008, 1010, 1010, 1010, 1010, 1012, 1010, 1012, 1012, - 1012, 1012, 1014, 1012, 1014, 1014, 1014, 1014, 1016, 1014, 1016, 1016, - 1016, 1016, 1018, 1016, 1018, 1018, 1018, 1018, 1020, 1018, 1020, 1020, - 1020, 1020, 1022, 1020, 1022, 1022, 1022, 1022, 1024, 1022, 1024, 1024, - 1024, 1024, 1026, 1024, 1026, 1026, 1026, 1026, 1028, 1026, 1028, 1028, - 1028, 1028, 1030, 1028, 1030, 1030, 1030, 1030, 1002, 1030, 1002, 1002, - 1032, 1033, 1034, 1033, 1035, 1034, 1034, 1035, 1036, 1035, 612, 1036, - 1036, 612, 1037, 612, 610, 1037, 1037, 610, 1032, 610, 1033, 1032, - 1032, 1032, 1034, 1032, 1034, 1034, 1034, 1034, 1036, 1034, 1036, 1036, - 1036, 1036, 1037, 1036, 1037, 1037, 1037, 1037, 1032, 1037, 1032, 1032, - 1037, 610, 1038, 610, 1039, 1038, 1038, 1039, 1040, 1039, 1041, 1040, - 1040, 1041, 1032, 1041, 1033, 1032, 1032, 1033, 1037, 1033, 610, 1037, - 1037, 1037, 1038, 1037, 1038, 1038, 1038, 1038, 1040, 1038, 1040, 1040, - 1040, 1040, 1032, 1040, 1032, 1032, 1032, 1032, 1037, 1032, 1037, 1037, - 609, 610, 607, 610, 608, 607, 607, 608, 1042, 608, 1043, 1042, - 1042, 1043, 1044, 1043, 1045, 1044, 1044, 1045, 1046, 1045, 1047, 1046, - 1046, 1047, 1048, 1047, 1039, 1048, 1048, 1039, 609, 1039, 610, 609, - 609, 609, 607, 609, 607, 607, 607, 607, 1042, 607, 1042, 1042, - 1042, 1042, 1044, 1042, 1044, 1044, 1044, 1044, 1046, 1044, 1046, 1046, - 1046, 1046, 1048, 1046, 1048, 1048, 1048, 1048, 609, 1048, 609, 609, - 1049, 1050, 1051, 1050, 1052, 1051, 1051, 1052, 1053, 1052, 1054, 1053, - 1053, 1054, 1055, 1054, 1056, 1055, 1055, 1056, 1057, 1056, 1058, 1057, - 1057, 1058, 1059, 1058, 1060, 1059, 1059, 1060, 1049, 1060, 1050, 1049, - 1049, 1049, 1051, 1049, 1051, 1051, 1051, 1051, 1053, 1051, 1053, 1053, - 1053, 1053, 1055, 1053, 1055, 1055, 1055, 1055, 1057, 1055, 1057, 1057, - 1057, 1057, 1059, 1057, 1059, 1059, 1059, 1059, 1049, 1059, 1049, 1049, - 1049, 1050, 1059, 1050, 1060, 1059, 1059, 1060, 1057, 1060, 1058, 1057, - 1057, 1058, 1008, 1058, 1009, 1008, 1008, 1009, 1006, 1009, 1007, 1006, - 1006, 1007, 1004, 1007, 1005, 1004, 1004, 1005, 1002, 1005, 1003, 1002, - 1002, 1003, 1061, 1003, 1062, 1061, 1061, 1062, 1049, 1062, 1050, 1049, - 1049, 1049, 1059, 1049, 1059, 1059, 1059, 1059, 1057, 1059, 1057, 1057, - 1057, 1057, 1008, 1057, 1008, 1008, 1008, 1008, 1006, 1008, 1006, 1006, - 1006, 1006, 1004, 1006, 1004, 1004, 1004, 1004, 1002, 1004, 1002, 1002, - 1002, 1002, 1061, 1002, 1061, 1061, 1061, 1061, 1049, 1061, 1049, 1049, - 1063, 1064, 1065, 1064, 1066, 1065, 1065, 1066, 1067, 1066, 1068, 1067, - 1067, 1068, 1069, 1068, 1070, 1069, 1069, 1070, 1071, 1070, 1072, 1071, - 1071, 1072, 1073, 1072, 1074, 1073, 1073, 1074, 1075, 1074, 1076, 1075, - 1075, 1076, 1077, 1076, 1078, 1077, 1077, 1078, 1079, 1078, 1080, 1079, - 1079, 1080, 1081, 1080, 1082, 1081, 1081, 1082, 1083, 1082, 1084, 1083, - 1083, 1084, 1063, 1084, 1064, 1063, 1063, 1063, 1065, 1063, 1065, 1065, - 1065, 1065, 1067, 1065, 1067, 1067, 1067, 1067, 1069, 1067, 1069, 1069, - 1069, 1069, 1071, 1069, 1071, 1071, 1071, 1071, 1073, 1071, 1073, 1073, - 1073, 1073, 1075, 1073, 1075, 1075, 1075, 1075, 1077, 1075, 1077, 1077, - 1077, 1077, 1079, 1077, 1079, 1079, 1079, 1079, 1081, 1079, 1081, 1081, - 1081, 1081, 1083, 1081, 1083, 1083, 1083, 1083, 1063, 1083, 1063, 1063, - 1085, 1086, 1087, 1086, 1088, 1087, 1087, 1088, 1083, 1088, 1084, 1083, - 1083, 1084, 1081, 1084, 1082, 1081, 1081, 1082, 1089, 1082, 1090, 1089, - 1089, 1090, 1085, 1090, 1086, 1085, 1085, 1085, 1087, 1085, 1087, 1087, - 1087, 1087, 1083, 1087, 1083, 1083, 1083, 1083, 1081, 1083, 1081, 1081, - 1081, 1081, 1089, 1081, 1089, 1089, 1089, 1089, 1085, 1089, 1085, 1085, - 1044, 1045, 1042, 1045, 1043, 1042, 1042, 1043, 1091, 1043, 1092, 1091, - 1091, 1092, 1093, 1092, 1094, 1093, 1093, 1094, 1095, 1094, 1096, 1095, - 1095, 1096, 1097, 1096, 1098, 1097, 1097, 1098, 1099, 1098, 1100, 1099, - 1099, 1100, 1101, 1100, 1102, 1101, 1101, 1102, 1103, 1102, 1104, 1103, - 1103, 1104, 1087, 1104, 1088, 1087, 1087, 1088, 1085, 1088, 1086, 1085, - 1085, 1086, 1105, 1086, 1106, 1105, 1105, 1106, 1107, 1106, 1108, 1107, - 1107, 1108, 1109, 1108, 1110, 1109, 1109, 1110, 1044, 1110, 1045, 1044, - 1044, 1044, 1042, 1044, 1042, 1042, 1042, 1042, 1091, 1042, 1091, 1091, - 1091, 1091, 1093, 1091, 1093, 1093, 1093, 1093, 1095, 1093, 1095, 1095, - 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1099, 1097, 1099, 1099, - 1099, 1099, 1101, 1099, 1101, 1101, 1101, 1101, 1103, 1101, 1103, 1103, - 1103, 1103, 1087, 1103, 1087, 1087, 1087, 1087, 1085, 1087, 1085, 1085, - 1085, 1085, 1105, 1085, 1105, 1105, 1105, 1105, 1107, 1105, 1107, 1107, - 1107, 1107, 1109, 1107, 1109, 1109, 1109, 1109, 1044, 1109, 1044, 1044, - 1065, 1066, 1063, 1066, 1064, 1063, 1063, 1064, 1111, 1064, 1112, 1111, - 1111, 1112, 1113, 1112, 1114, 1113, 1113, 1114, 1115, 1114, 1116, 1115, - 1115, 1116, 1117, 1116, 1118, 1117, 1117, 1118, 1119, 1118, 1120, 1119, - 1119, 1120, 1065, 1120, 1066, 1065, 1065, 1065, 1063, 1065, 1063, 1063, - 1063, 1063, 1111, 1063, 1111, 1111, 1111, 1111, 1113, 1111, 1113, 1113, - 1113, 1113, 1115, 1113, 1115, 1115, 1115, 1115, 1117, 1115, 1117, 1117, - 1117, 1117, 1119, 1117, 1119, 1119, 1119, 1119, 1065, 1119, 1065, 1065, - 1121, 1122, 1123, 1122, 1124, 1123, 1123, 1124, 1075, 1124, 1076, 1075, - 1075, 1076, 1073, 1076, 1074, 1073, 1073, 1074, 1125, 1074, 1126, 1125, - 1125, 1126, 1127, 1126, 1128, 1127, 1127, 1128, 1129, 1128, 1130, 1129, - 1129, 1130, 1115, 1130, 1116, 1115, 1115, 1116, 1113, 1116, 1114, 1113, - 1113, 1114, 1121, 1114, 1122, 1121, 1121, 1121, 1123, 1121, 1123, 1123, - 1123, 1123, 1075, 1123, 1075, 1075, 1075, 1075, 1073, 1075, 1073, 1073, - 1073, 1073, 1125, 1073, 1125, 1125, 1125, 1125, 1127, 1125, 1127, 1127, - 1127, 1127, 1129, 1127, 1129, 1129, 1129, 1129, 1115, 1129, 1115, 1115, - 1115, 1115, 1113, 1115, 1113, 1113, 1113, 1113, 1121, 1113, 1121, 1121, - 1123, 1124, 1121, 1124, 1122, 1121, 1121, 1122, 1055, 1122, 1056, 1055, - 1055, 1056, 1053, 1056, 1054, 1053, 1053, 1054, 1123, 1054, 1124, 1123, - 1123, 1123, 1121, 1123, 1121, 1121, 1121, 1121, 1055, 1121, 1055, 1055, - 1055, 1055, 1053, 1055, 1053, 1053, 1053, 1053, 1123, 1053, 1123, 1123, - 1131, 1132, 1133, 1132, 1134, 1133, 1133, 1134, 1135, 1134, 1136, 1135, - 1135, 1136, 1137, 1136, 1138, 1137, 1137, 1138, 1139, 1138, 1140, 1139, - 1139, 1140, 1141, 1140, 1142, 1141, 1141, 1142, 1131, 1142, 1132, 1131, - 1131, 1131, 1133, 1131, 1133, 1133, 1133, 1133, 1135, 1133, 1135, 1135, - 1135, 1135, 1137, 1135, 1137, 1137, 1137, 1137, 1139, 1137, 1139, 1139, - 1139, 1139, 1141, 1139, 1141, 1141, 1141, 1141, 1131, 1141, 1131, 1131, - 1143, 1144, 1141, 1144, 1142, 1141, 1141, 1142, 1139, 1142, 1140, 1139, - 1139, 1140, 1145, 1140, 1146, 1145, 1145, 1146, 1147, 1146, 1148, 1147, - 1147, 1148, 1149, 1148, 1150, 1149, 1149, 1150, 1151, 1150, 1152, 1151, - 1151, 1152, 1153, 1152, 1154, 1153, 1153, 1154, 1155, 1154, 1156, 1155, - 1155, 1156, 1143, 1156, 1144, 1143, 1143, 1143, 1141, 1143, 1141, 1141, - 1141, 1141, 1139, 1141, 1139, 1139, 1139, 1139, 1145, 1139, 1145, 1145, - 1145, 1145, 1147, 1145, 1147, 1147, 1147, 1147, 1149, 1147, 1149, 1149, - 1149, 1149, 1151, 1149, 1151, 1151, 1151, 1151, 1153, 1151, 1153, 1153, - 1153, 1153, 1155, 1153, 1155, 1155, 1155, 1155, 1143, 1155, 1143, 1143, - 409, 410, 407, 410, 408, 407, 407, 408, 1157, 408, 1158, 1157, - 1157, 1158, 1159, 1158, 1160, 1159, 1159, 1160, 1135, 1160, 1136, 1135, - 1135, 1136, 1133, 1136, 1134, 1133, 1133, 1134, 1161, 1134, 1162, 1161, - 1161, 1162, 409, 1162, 410, 409, 409, 409, 407, 409, 407, 407, - 407, 407, 1157, 407, 1157, 1157, 1157, 1157, 1159, 1157, 1159, 1159, - 1159, 1159, 1135, 1159, 1135, 1135, 1135, 1135, 1133, 1135, 1133, 1133, - 1133, 1133, 1161, 1133, 1161, 1161, 1161, 1161, 409, 1161, 409, 409, - 1163, 1164, 1165, 1164, 1166, 1165, 1165, 1166, 1167, 1166, 1168, 1167, - 1167, 1168, 1169, 1168, 1170, 1169, 1169, 1170, 1171, 1170, 1172, 1171, - 1171, 1172, 1173, 1172, 1174, 1173, 1173, 1174, 1175, 1174, 1176, 1175, - 1175, 1176, 1177, 1176, 1178, 1177, 1177, 1178, 1179, 1178, 1180, 1179, - 1179, 1180, 1181, 1180, 1182, 1181, 1181, 1182, 1183, 1182, 1184, 1183, - 1183, 1184, 1185, 1184, 1186, 1185, 1185, 1186, 1187, 1186, 1188, 1187, - 1187, 1188, 1189, 1188, 1190, 1189, 1189, 1190, 1191, 1190, 1192, 1191, - 1191, 1192, 1193, 1192, 1194, 1193, 1193, 1194, 1195, 1194, 1196, 1195, - 1195, 1196, 1197, 1196, 1198, 1197, 1197, 1198, 1199, 1198, 1200, 1199, - 1199, 1200, 1201, 1200, 1202, 1201, 1201, 1202, 1203, 1202, 1204, 1203, - 1203, 1204, 1205, 1204, 1206, 1205, 1205, 1206, 1207, 1206, 1208, 1207, - 1207, 1208, 1209, 1208, 1210, 1209, 1209, 1210, 1211, 1210, 1212, 1211, - 1211, 1212, 1213, 1212, 1214, 1213, 1213, 1214, 1215, 1214, 1216, 1215, - 1215, 1216, 1217, 1216, 1218, 1217, 1217, 1218, 1219, 1218, 1220, 1219, - 1219, 1220, 1221, 1220, 1222, 1221, 1221, 1222, 1223, 1222, 1224, 1223, - 1223, 1224, 1225, 1224, 1226, 1225, 1225, 1226, 1227, 1226, 1228, 1227, - 1227, 1228, 1229, 1228, 1230, 1229, 1229, 1230, 1231, 1230, 1232, 1231, - 1231, 1232, 1233, 1232, 1234, 1233, 1233, 1234, 1235, 1234, 1236, 1235, - 1235, 1236, 1237, 1236, 1238, 1237, 1237, 1238, 1239, 1238, 1240, 1239, - 1239, 1240, 1241, 1240, 1242, 1241, 1241, 1242, 1243, 1242, 1244, 1243, - 1243, 1244, 1245, 1244, 1246, 1245, 1245, 1246, 1247, 1246, 1248, 1247, - 1247, 1248, 1249, 1248, 1250, 1249, 1249, 1250, 1251, 1250, 1252, 1251, - 1251, 1252, 1253, 1252, 1254, 1253, 1253, 1254, 1255, 1254, 1256, 1255, - 1255, 1256, 1257, 1256, 1258, 1257, 1257, 1258, 1259, 1258, 1260, 1259, - 1259, 1260, 1261, 1260, 1262, 1261, 1261, 1262, 1263, 1262, 1264, 1263, - 1263, 1264, 1265, 1264, 1266, 1265, 1265, 1266, 1267, 1266, 1268, 1267, - 1267, 1268, 1269, 1268, 1270, 1269, 1269, 1270, 1271, 1270, 1272, 1271, - 1271, 1272, 1273, 1272, 1274, 1273, 1273, 1274, 1275, 1274, 1276, 1275, - 1275, 1276, 1277, 1276, 1278, 1277, 1277, 1278, 1279, 1278, 1280, 1279, - 1279, 1280, 1281, 1280, 1282, 1281, 1281, 1282, 1283, 1282, 1284, 1283, - 1283, 1284, 1285, 1284, 1286, 1285, 1285, 1286, 1287, 1286, 1288, 1287, - 1287, 1288, 1289, 1288, 1290, 1289, 1289, 1290, 1291, 1290, 1292, 1291, - 1291, 1292, 1293, 1292, 1294, 1293, 1293, 1294, 1295, 1294, 1296, 1295, - 1295, 1296, 1163, 1296, 1164, 1163, 1163, 1163, 1165, 1163, 1165, 1165, - 1165, 1165, 1167, 1165, 1167, 1167, 1167, 1167, 1169, 1167, 1169, 1169, - 1169, 1169, 1171, 1169, 1171, 1171, 1171, 1171, 1173, 1171, 1173, 1173, - 1173, 1173, 1175, 1173, 1175, 1175, 1175, 1175, 1177, 1175, 1177, 1177, - 1177, 1177, 1179, 1177, 1179, 1179, 1179, 1179, 1181, 1179, 1181, 1181, - 1181, 1181, 1183, 1181, 1183, 1183, 1183, 1183, 1185, 1183, 1185, 1185, - 1185, 1185, 1187, 1185, 1187, 1187, 1187, 1187, 1189, 1187, 1189, 1189, - 1189, 1189, 1191, 1189, 1191, 1191, 1191, 1191, 1193, 1191, 1193, 1193, - 1193, 1193, 1195, 1193, 1195, 1195, 1195, 1195, 1197, 1195, 1197, 1197, - 1197, 1197, 1199, 1197, 1199, 1199, 1199, 1199, 1201, 1199, 1201, 1201, - 1201, 1201, 1203, 1201, 1203, 1203, 1203, 1203, 1205, 1203, 1205, 1205, - 1205, 1205, 1207, 1205, 1207, 1207, 1207, 1207, 1209, 1207, 1209, 1209, - 1209, 1209, 1211, 1209, 1211, 1211, 1211, 1211, 1213, 1211, 1213, 1213, - 1213, 1213, 1215, 1213, 1215, 1215, 1215, 1215, 1217, 1215, 1217, 1217, - 1217, 1217, 1219, 1217, 1219, 1219, 1219, 1219, 1221, 1219, 1221, 1221, - 1221, 1221, 1223, 1221, 1223, 1223, 1223, 1223, 1225, 1223, 1225, 1225, - 1225, 1225, 1227, 1225, 1227, 1227, 1227, 1227, 1229, 1227, 1229, 1229, - 1229, 1229, 1231, 1229, 1231, 1231, 1231, 1231, 1233, 1231, 1233, 1233, - 1233, 1233, 1235, 1233, 1235, 1235, 1235, 1235, 1237, 1235, 1237, 1237, - 1237, 1237, 1239, 1237, 1239, 1239, 1239, 1239, 1241, 1239, 1241, 1241, - 1241, 1241, 1243, 1241, 1243, 1243, 1243, 1243, 1245, 1243, 1245, 1245, - 1245, 1245, 1247, 1245, 1247, 1247, 1247, 1247, 1249, 1247, 1249, 1249, - 1249, 1249, 1251, 1249, 1251, 1251, 1251, 1251, 1253, 1251, 1253, 1253, - 1253, 1253, 1255, 1253, 1255, 1255, 1255, 1255, 1257, 1255, 1257, 1257, - 1257, 1257, 1259, 1257, 1259, 1259, 1259, 1259, 1261, 1259, 1261, 1261, - 1261, 1261, 1263, 1261, 1263, 1263, 1263, 1263, 1265, 1263, 1265, 1265, - 1265, 1265, 1267, 1265, 1267, 1267, 1267, 1267, 1269, 1267, 1269, 1269, - 1269, 1269, 1271, 1269, 1271, 1271, 1271, 1271, 1273, 1271, 1273, 1273, - 1273, 1273, 1275, 1273, 1275, 1275, 1275, 1275, 1277, 1275, 1277, 1277, - 1277, 1277, 1279, 1277, 1279, 1279, 1279, 1279, 1281, 1279, 1281, 1281, - 1281, 1281, 1283, 1281, 1283, 1283, 1283, 1283, 1285, 1283, 1285, 1285, - 1285, 1285, 1287, 1285, 1287, 1287, 1287, 1287, 1289, 1287, 1289, 1289, - 1289, 1289, 1291, 1289, 1291, 1291, 1291, 1291, 1293, 1291, 1293, 1293, - 1293, 1293, 1295, 1293, 1295, 1295, 1295, 1295, 1163, 1295, 1163, 1163, - 1297, 1298, 1299, 1298, 1300, 1299, 1299, 1300, 1301, 1300, 1302, 1301, - 1301, 1302, 1303, 1302, 1304, 1303, 1303, 1304, 1305, 1304, 1306, 1305, - 1305, 1306, 1307, 1306, 1308, 1307, 1307, 1308, 1309, 1308, 1310, 1309, - 1309, 1310, 1311, 1310, 1312, 1311, 1311, 1312, 1313, 1312, 1314, 1313, - 1313, 1314, 1315, 1314, 1316, 1315, 1315, 1316, 1297, 1316, 1298, 1297, - 1297, 1297, 1299, 1297, 1299, 1299, 1299, 1299, 1301, 1299, 1301, 1301, - 1301, 1301, 1303, 1301, 1303, 1303, 1303, 1303, 1305, 1303, 1305, 1305, - 1305, 1305, 1307, 1305, 1307, 1307, 1307, 1307, 1309, 1307, 1309, 1309, - 1309, 1309, 1311, 1309, 1311, 1311, 1311, 1311, 1313, 1311, 1313, 1313, - 1313, 1313, 1315, 1313, 1315, 1315, 1315, 1315, 1297, 1315, 1297, 1297, - 1317, 1318, 1319, 1318, 1320, 1319, 1319, 1320, 1321, 1320, 1322, 1321, - 1321, 1322, 1323, 1322, 1324, 1323, 1323, 1324, 1317, 1324, 1318, 1317, - 1317, 1317, 1319, 1317, 1319, 1319, 1319, 1319, 1321, 1319, 1321, 1321, - 1321, 1321, 1323, 1321, 1323, 1323, 1323, 1323, 1317, 1323, 1317, 1317, - 1325, 1324, 1326, 1324, 1322, 1326, 1326, 1322, 1327, 1322, 1328, 1327, - 1327, 1328, 1329, 1328, 1330, 1329, 1329, 1330, 1331, 1330, 1332, 1331, - 1331, 1332, 1325, 1332, 1324, 1325, 1325, 1325, 1326, 1325, 1326, 1326, - 1326, 1326, 1327, 1326, 1327, 1327, 1327, 1327, 1329, 1327, 1329, 1329, - 1329, 1329, 1331, 1329, 1331, 1331, 1331, 1331, 1325, 1331, 1325, 1325, - 1333, 1334, 1335, 1334, 1336, 1335, 1335, 1336, 1337, 1336, 1338, 1337, - 1337, 1338, 1339, 1338, 1306, 1339, 1339, 1306, 1340, 1306, 1304, 1340, - 1340, 1304, 1341, 1304, 1342, 1341, 1341, 1342, 1333, 1342, 1334, 1333, - 1333, 1333, 1335, 1333, 1335, 1335, 1335, 1335, 1337, 1335, 1337, 1337, - 1337, 1337, 1339, 1337, 1339, 1339, 1339, 1339, 1340, 1339, 1340, 1340, - 1340, 1340, 1341, 1340, 1341, 1341, 1341, 1341, 1333, 1341, 1333, 1333, - 1331, 1332, 1329, 1332, 1330, 1329, 1329, 1330, 1327, 1330, 1328, 1327, - 1327, 1328, 1343, 1328, 1344, 1343, 1343, 1344, 1345, 1344, 1346, 1345, - 1345, 1346, 1347, 1346, 1348, 1347, 1347, 1348, 1349, 1348, 1350, 1349, - 1349, 1350, 1351, 1350, 1352, 1351, 1351, 1352, 1331, 1352, 1332, 1331, - 1331, 1331, 1329, 1331, 1329, 1329, 1329, 1329, 1327, 1329, 1327, 1327, - 1327, 1327, 1343, 1327, 1343, 1343, 1343, 1343, 1345, 1343, 1345, 1345, - 1345, 1345, 1347, 1345, 1347, 1347, 1347, 1347, 1349, 1347, 1349, 1349, - 1349, 1349, 1351, 1349, 1351, 1351, 1351, 1351, 1331, 1351, 1331, 1331, - 1531, 1532, 1533, 1532, 1534, 1533, 1533, 1534, 1535, 1534, 1536, 1535, - 1535, 1536, 1537, 1536, 1538, 1537, 1537, 1538, 1539, 1538, 1540, 1539, - 1539, 1540, 1541, 1540, 1542, 1541, 1541, 1542, 1543, 1542, 1544, 1543, - 1543, 1544, 1545, 1544, 1546, 1545, 1545, 1546, 1547, 1546, 1548, 1547, - 1547, 1548, 1549, 1548, 1550, 1549, 1549, 1550, 1531, 1550, 1532, 1531, - 1531, 1531, 1533, 1531, 1533, 1533, 1533, 1533, 1535, 1533, 1535, 1535, - 1535, 1535, 1537, 1535, 1537, 1537, 1537, 1537, 1539, 1537, 1539, 1539, - 1539, 1539, 1541, 1539, 1541, 1541, 1541, 1541, 1543, 1541, 1543, 1543, - 1543, 1543, 1545, 1543, 1545, 1545, 1545, 1545, 1547, 1545, 1547, 1547, - 1547, 1547, 1549, 1547, 1549, 1549, 1549, 1549, 1531, 1549, 1531, 1531, - 1551, 1552, 1553, 1552, 1554, 1553, 1553, 1554, 1555, 1554, 1556, 1555, - 1555, 1556, 1557, 1556, 1558, 1557, 1557, 1558, 1559, 1558, 1560, 1559, - 1559, 1560, 1551, 1560, 1552, 1551, 1551, 1551, 1553, 1551, 1553, 1553, - 1553, 1553, 1555, 1553, 1555, 1555, 1555, 1555, 1557, 1555, 1557, 1557, - 1557, 1557, 1559, 1557, 1559, 1559, 1559, 1559, 1551, 1559, 1551, 1551, - 1561, 1540, 1562, 1540, 1563, 1562, 1562, 1563, 1564, 1563, 1565, 1564, - 1564, 1565, 1566, 1565, 1567, 1566, 1566, 1567, 1568, 1567, 1569, 1568, - 1568, 1569, 1570, 1569, 1571, 1570, 1570, 1571, 1572, 1571, 1542, 1572, - 1572, 1542, 1561, 1542, 1540, 1561, 1561, 1561, 1562, 1561, 1562, 1562, - 1562, 1562, 1564, 1562, 1564, 1564, 1564, 1564, 1566, 1564, 1566, 1566, - 1566, 1566, 1568, 1566, 1568, 1568, 1568, 1568, 1570, 1568, 1570, 1570, - 1570, 1570, 1572, 1570, 1572, 1572, 1572, 1572, 1561, 1572, 1561, 1561, - 1553, 1554, 1551, 1554, 1552, 1551, 1551, 1552, 1573, 1552, 1574, 1573, - 1573, 1574, 1575, 1574, 1576, 1575, 1575, 1576, 1577, 1576, 1578, 1577, - 1577, 1578, 1568, 1578, 1569, 1568, 1568, 1569, 1566, 1569, 1567, 1566, - 1566, 1567, 1579, 1567, 1580, 1579, 1579, 1580, 1581, 1580, 1582, 1581, - 1581, 1582, 1553, 1582, 1554, 1553, 1553, 1553, 1551, 1553, 1551, 1551, - 1551, 1551, 1573, 1551, 1573, 1573, 1573, 1573, 1575, 1573, 1575, 1575, - 1575, 1575, 1577, 1575, 1577, 1577, 1577, 1577, 1568, 1577, 1568, 1568, - 1568, 1568, 1566, 1568, 1566, 1566, 1566, 1566, 1579, 1566, 1579, 1579, - 1579, 1579, 1581, 1579, 1581, 1581, 1581, 1581, 1553, 1581, 1553, 1553, - 1583, 1584, 1585, 1584, 1586, 1585, 1585, 1586, 1587, 1586, 1588, 1587, - 1587, 1588, 1589, 1588, 1590, 1589, 1589, 1590, 1591, 1590, 1592, 1591, - 1591, 1592, 1593, 1592, 1594, 1593, 1593, 1594, 1595, 1594, 1596, 1595, - 1595, 1596, 1597, 1596, 1598, 1597, 1597, 1598, 1583, 1598, 1584, 1583, - 1583, 1583, 1585, 1583, 1585, 1585, 1585, 1585, 1587, 1585, 1587, 1587, - 1587, 1587, 1589, 1587, 1589, 1589, 1589, 1589, 1591, 1589, 1591, 1591, - 1591, 1591, 1593, 1591, 1593, 1593, 1593, 1593, 1595, 1593, 1595, 1595, - 1595, 1595, 1597, 1595, 1597, 1597, 1597, 1597, 1583, 1597, 1583, 1583, - 1559, 1560, 1583, 1560, 1584, 1583, 1583, 1584, 1597, 1584, 1598, 1597, - 1597, 1598, 1595, 1598, 1596, 1595, 1595, 1596, 1593, 1596, 1594, 1593, - 1593, 1594, 1599, 1594, 1600, 1599, 1599, 1600, 1575, 1600, 1576, 1575, - 1575, 1576, 1573, 1576, 1574, 1573, 1573, 1574, 1551, 1574, 1552, 1551, - 1551, 1552, 1559, 1552, 1560, 1559, 1559, 1559, 1583, 1559, 1583, 1583, - 1583, 1583, 1597, 1583, 1597, 1597, 1597, 1597, 1595, 1597, 1595, 1595, - 1595, 1595, 1593, 1595, 1593, 1593, 1593, 1593, 1599, 1593, 1599, 1599, - 1599, 1599, 1575, 1599, 1575, 1575, 1575, 1575, 1573, 1575, 1573, 1573, - 1573, 1573, 1551, 1573, 1551, 1551, 1551, 1551, 1559, 1551, 1559, 1559, - 1601, 1602, 1603, 1602, 1604, 1603, 1603, 1604, 1605, 1604, 1606, 1605, - 1605, 1606, 1607, 1606, 1608, 1607, 1607, 1608, 1609, 1608, 1610, 1609, - 1609, 1610, 1611, 1610, 1538, 1611, 1611, 1538, 1612, 1538, 1536, 1612, - 1612, 1536, 1613, 1536, 1534, 1613, 1613, 1534, 1614, 1534, 1615, 1614, - 1614, 1615, 1616, 1615, 1617, 1616, 1616, 1617, 1618, 1617, 1619, 1618, - 1618, 1619, 1620, 1619, 1621, 1620, 1620, 1621, 1622, 1621, 1623, 1622, - 1622, 1623, 1624, 1623, 1625, 1624, 1624, 1625, 1626, 1625, 1627, 1626, - 1626, 1627, 1628, 1627, 1629, 1628, 1628, 1629, 1601, 1629, 1602, 1601, - 1601, 1601, 1603, 1601, 1603, 1603, 1603, 1603, 1605, 1603, 1605, 1605, - 1605, 1605, 1607, 1605, 1607, 1607, 1607, 1607, 1609, 1607, 1609, 1609, - 1609, 1609, 1611, 1609, 1611, 1611, 1611, 1611, 1612, 1611, 1612, 1612, - 1612, 1612, 1613, 1612, 1613, 1613, 1613, 1613, 1614, 1613, 1614, 1614, - 1614, 1614, 1616, 1614, 1616, 1616, 1616, 1616, 1618, 1616, 1618, 1618, - 1618, 1618, 1620, 1618, 1620, 1620, 1620, 1620, 1622, 1620, 1622, 1622, - 1622, 1622, 1624, 1622, 1624, 1624, 1624, 1624, 1626, 1624, 1626, 1626, - 1626, 1626, 1628, 1626, 1628, 1628, 1628, 1628, 1601, 1628, 1601, 1601, - 1630, 1631, 1632, 1631, 1633, 1632, 1632, 1633, 1634, 1633, 1635, 1634, - 1634, 1635, 1636, 1635, 1627, 1636, 1636, 1627, 1637, 1627, 1625, 1637, - 1637, 1625, 1638, 1625, 1623, 1638, 1638, 1623, 1639, 1623, 1621, 1639, - 1639, 1621, 1640, 1621, 1619, 1640, 1640, 1619, 1630, 1619, 1631, 1630, - 1630, 1630, 1632, 1630, 1632, 1632, 1632, 1632, 1634, 1632, 1634, 1634, - 1634, 1634, 1636, 1634, 1636, 1636, 1636, 1636, 1637, 1636, 1637, 1637, - 1637, 1637, 1638, 1637, 1638, 1638, 1638, 1638, 1639, 1638, 1639, 1639, - 1639, 1639, 1640, 1639, 1640, 1640, 1640, 1640, 1630, 1640, 1630, 1630, - 1641, 1642, 1643, 1642, 1644, 1643, 1643, 1644, 1645, 1644, 1646, 1645, - 1645, 1646, 1647, 1646, 1648, 1647, 1647, 1648, 1649, 1648, 1650, 1649, - 1649, 1650, 1651, 1650, 1652, 1651, 1651, 1652, 1653, 1652, 1654, 1653, - 1653, 1654, 1655, 1654, 1656, 1655, 1655, 1656, 1657, 1656, 1658, 1657, - 1657, 1658, 1659, 1658, 1660, 1659, 1659, 1660, 1641, 1660, 1642, 1641, - 1641, 1641, 1643, 1641, 1643, 1643, 1643, 1643, 1645, 1643, 1645, 1645, - 1645, 1645, 1647, 1645, 1647, 1647, 1647, 1647, 1649, 1647, 1649, 1649, - 1649, 1649, 1651, 1649, 1651, 1651, 1651, 1651, 1653, 1651, 1653, 1653, - 1653, 1653, 1655, 1653, 1655, 1655, 1655, 1655, 1657, 1655, 1657, 1657, - 1657, 1657, 1659, 1657, 1659, 1659, 1659, 1659, 1641, 1659, 1641, 1641, - 1653, 1654, 1661, 1654, 1662, 1661, 1661, 1662, 221, 1662, 222, 221, - 221, 222, 219, 222, 220, 219, 219, 220, 1663, 220, 1664, 1663, - 1663, 1664, 1665, 1664, 1666, 1665, 1665, 1666, 211, 1666, 212, 211, - 211, 212, 209, 212, 210, 209, 209, 210, 1667, 210, 1668, 1667, - 1667, 1668, 1655, 1668, 1656, 1655, 1655, 1656, 1653, 1656, 1654, 1653, - 1653, 1653, 1661, 1653, 1661, 1661, 1661, 1661, 221, 1661, 221, 221, - 221, 221, 219, 221, 219, 219, 219, 219, 1663, 219, 1663, 1663, - 1663, 1663, 1665, 1663, 1665, 1665, 1665, 1665, 211, 1665, 211, 211, - 211, 211, 209, 211, 209, 209, 209, 209, 1667, 209, 1667, 1667, - 1667, 1667, 1655, 1667, 1655, 1655, 1655, 1655, 1653, 1655, 1653, 1653, - 1641, 1642, 1659, 1642, 1660, 1659, 1659, 1660, 1669, 1660, 1670, 1669, - 1669, 1670, 1671, 1670, 1672, 1671, 1671, 1672, 1673, 1672, 1674, 1673, - 1673, 1674, 1675, 1674, 1676, 1675, 1675, 1676, 1649, 1676, 1650, 1649, - 1649, 1650, 1647, 1650, 1648, 1647, 1647, 1648, 1677, 1648, 1678, 1677, - 1677, 1678, 1679, 1678, 1680, 1679, 1679, 1680, 1641, 1680, 1642, 1641, - 1641, 1641, 1659, 1641, 1659, 1659, 1659, 1659, 1669, 1659, 1669, 1669, - 1669, 1669, 1671, 1669, 1671, 1671, 1671, 1671, 1673, 1671, 1673, 1673, - 1673, 1673, 1675, 1673, 1675, 1675, 1675, 1675, 1649, 1675, 1649, 1649, - 1649, 1649, 1647, 1649, 1647, 1647, 1647, 1647, 1677, 1647, 1677, 1677, - 1677, 1677, 1679, 1677, 1679, 1679, 1679, 1679, 1641, 1679, 1641, 1641, - 1673, 1674, 1671, 1674, 1672, 1671, 1671, 1672, 1681, 1672, 1682, 1681, - 1681, 1682, 1683, 1682, 1684, 1683, 1683, 1684, 1685, 1684, 1686, 1685, - 1685, 1686, 1687, 1686, 1688, 1687, 1687, 1688, 1689, 1688, 1690, 1689, - 1689, 1690, 1691, 1690, 1692, 1691, 1691, 1692, 1693, 1692, 1694, 1693, - 1693, 1694, 1695, 1694, 1696, 1695, 1695, 1696, 1673, 1696, 1674, 1673, - 1673, 1673, 1671, 1673, 1671, 1671, 1671, 1671, 1681, 1671, 1681, 1681, - 1681, 1681, 1683, 1681, 1683, 1683, 1683, 1683, 1685, 1683, 1685, 1685, - 1685, 1685, 1687, 1685, 1687, 1687, 1687, 1687, 1689, 1687, 1689, 1689, - 1689, 1689, 1691, 1689, 1691, 1691, 1691, 1691, 1693, 1691, 1693, 1693, - 1693, 1693, 1695, 1693, 1695, 1695, 1695, 1695, 1673, 1695, 1673, 1673, - 1697, 1698, 1699, 1698, 1700, 1699, 1699, 1700, 1701, 1700, 1702, 1701, - 1701, 1702, 1703, 1702, 1704, 1703, 1703, 1704, 1705, 1704, 1706, 1705, - 1705, 1706, 1707, 1706, 1708, 1707, 1707, 1708, 1709, 1708, 1710, 1709, - 1709, 1710, 1711, 1710, 1712, 1711, 1711, 1712, 1713, 1712, 1714, 1713, - 1713, 1714, 1715, 1714, 1716, 1715, 1715, 1716, 1717, 1716, 1718, 1717, - 1717, 1718, 1719, 1718, 1720, 1719, 1719, 1720, 1721, 1720, 1722, 1721, - 1721, 1722, 1723, 1722, 1724, 1723, 1723, 1724, 1725, 1724, 1726, 1725, - 1725, 1726, 1727, 1726, 1728, 1727, 1727, 1728, 1729, 1728, 1730, 1729, - 1729, 1730, 1697, 1730, 1698, 1697, 1697, 1697, 1699, 1697, 1699, 1699, - 1699, 1699, 1701, 1699, 1701, 1701, 1701, 1701, 1703, 1701, 1703, 1703, - 1703, 1703, 1705, 1703, 1705, 1705, 1705, 1705, 1707, 1705, 1707, 1707, - 1707, 1707, 1709, 1707, 1709, 1709, 1709, 1709, 1711, 1709, 1711, 1711, - 1711, 1711, 1713, 1711, 1713, 1713, 1713, 1713, 1715, 1713, 1715, 1715, - 1715, 1715, 1717, 1715, 1717, 1717, 1717, 1717, 1719, 1717, 1719, 1719, - 1719, 1719, 1721, 1719, 1721, 1721, 1721, 1721, 1723, 1721, 1723, 1723, - 1723, 1723, 1725, 1723, 1725, 1725, 1725, 1725, 1727, 1725, 1727, 1727, - 1727, 1727, 1729, 1727, 1729, 1729, 1729, 1729, 1697, 1729, 1697, 1697, - 1731, 1724, 1732, 1724, 1722, 1732, 1732, 1722, 1733, 1722, 1720, 1733, - 1733, 1720, 1734, 1720, 1718, 1734, 1734, 1718, 1731, 1718, 1724, 1731, - 1731, 1731, 1732, 1731, 1732, 1732, 1732, 1732, 1733, 1732, 1733, 1733, - 1733, 1733, 1734, 1733, 1734, 1734, 1734, 1734, 1731, 1734, 1731, 1731, - 1735, 1714, 1736, 1714, 1712, 1736, 1736, 1712, 1737, 1712, 1710, 1737, - 1737, 1710, 1738, 1710, 1708, 1738, 1738, 1708, 1735, 1708, 1714, 1735, - 1735, 1735, 1736, 1735, 1736, 1736, 1736, 1736, 1737, 1736, 1737, 1737, - 1737, 1737, 1738, 1737, 1738, 1738, 1738, 1738, 1735, 1738, 1735, 1735, - 1739, 1706, 1740, 1706, 1704, 1740, 1740, 1704, 1741, 1704, 1702, 1741, - 1741, 1702, 1742, 1702, 1700, 1742, 1742, 1700, 1743, 1700, 1744, 1743, - 1743, 1744, 1745, 1744, 1746, 1745, 1745, 1746, 1739, 1746, 1706, 1739, - 1739, 1739, 1740, 1739, 1740, 1740, 1740, 1740, 1741, 1740, 1741, 1741, - 1741, 1741, 1742, 1741, 1742, 1742, 1742, 1742, 1743, 1742, 1743, 1743, - 1743, 1743, 1745, 1743, 1745, 1745, 1745, 1745, 1739, 1745, 1739, 1739, - 1747, 1748, 1749, 1748, 1750, 1749, 1749, 1750, 1751, 1750, 1752, 1751, - 1751, 1752, 1753, 1752, 1754, 1753, 1753, 1754, 1755, 1754, 1756, 1755, - 1755, 1756, 1757, 1756, 1758, 1757, 1757, 1758, 1759, 1758, 1760, 1759, - 1759, 1760, 1761, 1760, 1762, 1761, 1761, 1762, 1763, 1762, 1764, 1763, - 1763, 1764, 1765, 1764, 1766, 1765, 1765, 1766, 1693, 1766, 1694, 1693, - 1693, 1694, 1691, 1694, 1692, 1691, 1691, 1692, 1685, 1692, 1686, 1685, - 1685, 1686, 1683, 1686, 1684, 1683, 1683, 1684, 1767, 1684, 1768, 1767, - 1767, 1768, 1769, 1768, 1770, 1769, 1769, 1770, 1747, 1770, 1748, 1747, - 1747, 1747, 1749, 1747, 1749, 1749, 1749, 1749, 1751, 1749, 1751, 1751, - 1751, 1751, 1753, 1751, 1753, 1753, 1753, 1753, 1755, 1753, 1755, 1755, - 1755, 1755, 1757, 1755, 1757, 1757, 1757, 1757, 1759, 1757, 1759, 1759, - 1759, 1759, 1761, 1759, 1761, 1761, 1761, 1761, 1763, 1761, 1763, 1763, - 1763, 1763, 1765, 1763, 1765, 1765, 1765, 1765, 1693, 1765, 1693, 1693, - 1693, 1693, 1691, 1693, 1691, 1691, 1691, 1691, 1685, 1691, 1685, 1685, - 1685, 1685, 1683, 1685, 1683, 1683, 1683, 1683, 1767, 1683, 1767, 1767, - 1767, 1767, 1769, 1767, 1769, 1769, 1769, 1769, 1747, 1769, 1747, 1747, - 1753, 1754, 1771, 1754, 1772, 1771, 1771, 1772, 1773, 1772, 1774, 1773, - 1773, 1774, 1775, 1774, 1776, 1775, 1775, 1776, 1747, 1776, 1748, 1747, - 1747, 1748, 1769, 1748, 1770, 1769, 1769, 1770, 1777, 1770, 1778, 1777, - 1777, 1778, 1779, 1778, 1780, 1779, 1779, 1780, 1781, 1780, 1782, 1781, - 1781, 1782, 1783, 1782, 1784, 1783, 1783, 1784, 1785, 1784, 1786, 1785, - 1785, 1786, 1787, 1786, 1788, 1787, 1787, 1788, 1763, 1788, 1764, 1763, - 1763, 1764, 1761, 1764, 1762, 1761, 1761, 1762, 1789, 1762, 1790, 1789, - 1789, 1790, 1791, 1790, 1792, 1791, 1791, 1792, 1793, 1792, 1794, 1793, - 1793, 1794, 1755, 1794, 1756, 1755, 1755, 1756, 1753, 1756, 1754, 1753, - 1753, 1753, 1771, 1753, 1771, 1771, 1771, 1771, 1773, 1771, 1773, 1773, - 1773, 1773, 1775, 1773, 1775, 1775, 1775, 1775, 1747, 1775, 1747, 1747, - 1747, 1747, 1769, 1747, 1769, 1769, 1769, 1769, 1777, 1769, 1777, 1777, - 1777, 1777, 1779, 1777, 1779, 1779, 1779, 1779, 1781, 1779, 1781, 1781, - 1781, 1781, 1783, 1781, 1783, 1783, 1783, 1783, 1785, 1783, 1785, 1785, - 1785, 1785, 1787, 1785, 1787, 1787, 1787, 1787, 1763, 1787, 1763, 1763, - 1763, 1763, 1761, 1763, 1761, 1761, 1761, 1761, 1789, 1761, 1789, 1789, - 1789, 1789, 1791, 1789, 1791, 1791, 1791, 1791, 1793, 1791, 1793, 1793, - 1793, 1793, 1755, 1793, 1755, 1755, 1755, 1755, 1753, 1755, 1753, 1753, - 1795, 1796, 1797, 1796, 1798, 1797, 1797, 1798, 1799, 1798, 1800, 1799, - 1799, 1800, 1801, 1800, 1802, 1801, 1801, 1802, 1795, 1802, 1796, 1795, - 1795, 1795, 1797, 1795, 1797, 1797, 1797, 1797, 1799, 1797, 1799, 1799, - 1799, 1799, 1801, 1799, 1801, 1801, 1801, 1801, 1795, 1801, 1795, 1795, - 1803, 1804, 1805, 1804, 1806, 1805, 1805, 1806, 1807, 1806, 1808, 1807, - 1807, 1808, 1809, 1808, 1810, 1809, 1809, 1810, 1811, 1810, 1812, 1811, - 1811, 1812, 1803, 1812, 1804, 1803, 1803, 1803, 1805, 1803, 1805, 1805, - 1805, 1805, 1807, 1805, 1807, 1807, 1807, 1807, 1809, 1807, 1809, 1809, - 1809, 1809, 1811, 1809, 1811, 1811, 1811, 1811, 1803, 1811, 1803, 1803, - 1813, 1814, 1815, 1814, 1816, 1815, 1815, 1816, 1817, 1816, 1818, 1817, - 1817, 1818, 1819, 1818, 1810, 1819, 1819, 1810, 1820, 1810, 1808, 1820, - 1820, 1808, 1813, 1808, 1814, 1813, 1813, 1813, 1815, 1813, 1815, 1815, - 1815, 1815, 1817, 1815, 1817, 1817, 1817, 1817, 1819, 1817, 1819, 1819, - 1819, 1819, 1820, 1819, 1820, 1820, 1820, 1820, 1813, 1820, 1813, 1813, - 1815, 1816, 1813, 1816, 1814, 1813, 1813, 1814, 1797, 1814, 1798, 1797, - 1797, 1798, 1795, 1798, 1796, 1795, 1795, 1796, 1821, 1796, 1822, 1821, - 1821, 1822, 1815, 1822, 1816, 1815, 1815, 1815, 1813, 1815, 1813, 1813, - 1813, 1813, 1797, 1813, 1797, 1797, 1797, 1797, 1795, 1797, 1795, 1795, - 1795, 1795, 1821, 1795, 1821, 1821, 1821, 1821, 1815, 1821, 1815, 1815, - 225, 226, 1823, 226, 1824, 1823, 1823, 1824, 1825, 1824, 1826, 1825, - 1825, 1826, 1827, 1826, 1828, 1827, 1827, 1828, 1829, 1828, 1830, 1829, - 1829, 1830, 1831, 1830, 1832, 1831, 1831, 1832, 227, 1832, 228, 227, - 227, 228, 225, 228, 226, 225, 225, 225, 1823, 225, 1823, 1823, - 1823, 1823, 1825, 1823, 1825, 1825, 1825, 1825, 1827, 1825, 1827, 1827, - 1827, 1827, 1829, 1827, 1829, 1829, 1829, 1829, 1831, 1829, 1831, 1831, - 1831, 1831, 227, 1831, 227, 227, 227, 227, 225, 227, 225, 225, - 1803, 1804, 1833, 1804, 1834, 1833, 1833, 1834, 1835, 1834, 1836, 1835, - 1835, 1836, 1837, 1836, 1744, 1837, 1837, 1744, 1699, 1744, 1700, 1699, - 1699, 1700, 1697, 1700, 1698, 1697, 1697, 1698, 1838, 1698, 1839, 1838, - 1838, 1839, 1805, 1839, 1806, 1805, 1805, 1806, 1803, 1806, 1804, 1803, - 1803, 1803, 1833, 1803, 1833, 1833, 1833, 1833, 1835, 1833, 1835, 1835, - 1835, 1835, 1837, 1835, 1837, 1837, 1837, 1837, 1699, 1837, 1699, 1699, - 1699, 1699, 1697, 1699, 1697, 1697, 1697, 1697, 1838, 1697, 1838, 1838, - 1838, 1838, 1805, 1838, 1805, 1805, 1805, 1805, 1803, 1805, 1803, 1803, - 1840, 1841, 1842, 1841, 1843, 1842, 1842, 1843, 1844, 1843, 1845, 1844, - 1844, 1845, 1846, 1845, 1847, 1846, 1846, 1847, 1848, 1847, 1849, 1848, - 1848, 1849, 1850, 1849, 1851, 1850, 1850, 1851, 1852, 1851, 1853, 1852, - 1852, 1853, 1854, 1853, 1855, 1854, 1854, 1855, 1856, 1855, 1857, 1856, - 1856, 1857, 1858, 1857, 1859, 1858, 1858, 1859, 1860, 1859, 1861, 1860, - 1860, 1861, 1862, 1861, 1863, 1862, 1862, 1863, 1840, 1863, 1841, 1840, - 1840, 1840, 1842, 1840, 1842, 1842, 1842, 1842, 1844, 1842, 1844, 1844, - 1844, 1844, 1846, 1844, 1846, 1846, 1846, 1846, 1848, 1846, 1848, 1848, - 1848, 1848, 1850, 1848, 1850, 1850, 1850, 1850, 1852, 1850, 1852, 1852, - 1852, 1852, 1854, 1852, 1854, 1854, 1854, 1854, 1856, 1854, 1856, 1856, - 1856, 1856, 1858, 1856, 1858, 1858, 1858, 1858, 1860, 1858, 1860, 1860, - 1860, 1860, 1862, 1860, 1862, 1862, 1862, 1862, 1840, 1862, 1840, 1840, - 1864, 1865, 1866, 1865, 1867, 1866, 1866, 1867, 1868, 1867, 1869, 1868, - 1868, 1869, 1870, 1869, 1871, 1870, 1870, 1871, 1864, 1871, 1865, 1864, - 1864, 1864, 1866, 1864, 1866, 1866, 1866, 1866, 1868, 1866, 1868, 1868, - 1868, 1868, 1870, 1868, 1870, 1870, 1870, 1870, 1864, 1870, 1864, 1864, - 1872, 1873, 1874, 1873, 1875, 1874, 1874, 1875, 1876, 1875, 1877, 1876, - 1876, 1877, 1878, 1877, 1879, 1878, 1878, 1879, 1872, 1879, 1873, 1872, - 1872, 1872, 1874, 1872, 1874, 1874, 1874, 1874, 1876, 1874, 1876, 1876, - 1876, 1876, 1878, 1876, 1878, 1878, 1878, 1878, 1872, 1878, 1872, 1872, - 1880, 1881, 1882, 1881, 1883, 1882, 1882, 1883, 1884, 1883, 1885, 1884, - 1884, 1885, 1886, 1885, 348, 1886, 1886, 348, 1887, 348, 346, 1887, - 1887, 346, 1880, 346, 1881, 1880, 1880, 1880, 1882, 1880, 1882, 1882, - 1882, 1882, 1884, 1882, 1884, 1884, 1884, 1884, 1886, 1884, 1886, 1886, - 1886, 1886, 1887, 1886, 1887, 1887, 1887, 1887, 1880, 1887, 1880, 1880, - 1864, 1865, 1876, 1865, 1877, 1876, 1876, 1877, 1874, 1877, 1875, 1874, - 1874, 1875, 1888, 1875, 1889, 1888, 1888, 1889, 1866, 1889, 1867, 1866, - 1866, 1867, 1864, 1867, 1865, 1864, 1864, 1864, 1876, 1864, 1876, 1876, - 1876, 1876, 1874, 1876, 1874, 1874, 1874, 1874, 1888, 1874, 1888, 1888, - 1888, 1888, 1866, 1888, 1866, 1866, 1866, 1866, 1864, 1866, 1864, 1864, - 1848, 1849, 1890, 1849, 1891, 1890, 1890, 1891, 1892, 1891, 1893, 1892, - 1892, 1893, 267, 1893, 268, 267, 267, 268, 265, 268, 266, 265, - 265, 266, 1852, 266, 1853, 1852, 1852, 1853, 1850, 1853, 1851, 1850, - 1850, 1851, 1848, 1851, 1849, 1848, 1848, 1848, 1890, 1848, 1890, 1890, - 1890, 1890, 1892, 1890, 1892, 1892, 1892, 1892, 267, 1892, 267, 267, - 267, 267, 265, 267, 265, 265, 265, 265, 1852, 265, 1852, 1852, - 1852, 1852, 1850, 1852, 1850, 1850, 1850, 1850, 1848, 1850, 1848, 1848, - 1880, 1881, 1872, 1881, 1873, 1872, 1872, 1873, 1878, 1873, 1879, 1878, - 1878, 1879, 1894, 1879, 1895, 1894, 1894, 1895, 1896, 1895, 1897, 1896, - 1896, 1897, 1842, 1897, 1843, 1842, 1842, 1843, 1840, 1843, 1841, 1840, - 1840, 1841, 1898, 1841, 1899, 1898, 1898, 1899, 1882, 1899, 1883, 1882, - 1882, 1883, 1880, 1883, 1881, 1880, 1880, 1880, 1872, 1880, 1872, 1872, - 1872, 1872, 1878, 1872, 1878, 1878, 1878, 1878, 1894, 1878, 1894, 1894, - 1894, 1894, 1896, 1894, 1896, 1896, 1896, 1896, 1842, 1896, 1842, 1842, - 1842, 1842, 1840, 1842, 1840, 1840, 1840, 1840, 1898, 1840, 1898, 1898, - 1898, 1898, 1882, 1898, 1882, 1882, 1882, 1882, 1880, 1882, 1880, 1880, - 1900, 1901, 1902, 1901, 1903, 1902, 1902, 1903, 1904, 1903, 1905, 1904, - 1904, 1905, 1906, 1905, 1907, 1906, 1906, 1907, 1908, 1907, 1909, 1908, - 1908, 1909, 1910, 1909, 1911, 1910, 1910, 1911, 1900, 1911, 1901, 1900, - 1900, 1900, 1902, 1900, 1902, 1902, 1902, 1902, 1904, 1902, 1904, 1904, - 1904, 1904, 1906, 1904, 1906, 1906, 1906, 1906, 1908, 1906, 1908, 1908, - 1908, 1908, 1910, 1908, 1910, 1910, 1910, 1910, 1900, 1910, 1900, 1900, - 1912, 1913, 1914, 1913, 1915, 1914, 1914, 1915, 1904, 1915, 1905, 1904, - 1904, 1905, 1902, 1905, 1903, 1902, 1902, 1903, 1900, 1903, 1901, 1900, - 1900, 1901, 1916, 1901, 1917, 1916, 1916, 1917, 1912, 1917, 1913, 1912, - 1912, 1912, 1914, 1912, 1914, 1914, 1914, 1914, 1904, 1914, 1904, 1904, - 1904, 1904, 1902, 1904, 1902, 1902, 1902, 1902, 1900, 1902, 1900, 1900, - 1900, 1900, 1916, 1900, 1916, 1916, 1916, 1916, 1912, 1916, 1912, 1912, - 1918, 1919, 1920, 1919, 1921, 1920, 1920, 1921, 1922, 1921, 1923, 1922, - 1922, 1923, 1914, 1923, 1915, 1914, 1914, 1915, 1912, 1915, 1913, 1912, - 1912, 1913, 1916, 1913, 1917, 1916, 1916, 1917, 1924, 1917, 1925, 1924, - 1924, 1925, 1926, 1925, 1927, 1926, 1926, 1927, 1918, 1927, 1919, 1918, - 1918, 1918, 1920, 1918, 1920, 1920, 1920, 1920, 1922, 1920, 1922, 1922, - 1922, 1922, 1914, 1922, 1914, 1914, 1914, 1914, 1912, 1914, 1912, 1912, - 1912, 1912, 1916, 1912, 1916, 1916, 1916, 1916, 1924, 1916, 1924, 1924, - 1924, 1924, 1926, 1924, 1926, 1926, 1926, 1926, 1918, 1926, 1918, 1918, - 1920, 1921, 1918, 1921, 1919, 1918, 1918, 1919, 1926, 1919, 1927, 1926, - 1926, 1927, 1924, 1927, 1925, 1924, 1924, 1925, 1928, 1925, 1929, 1928, - 1928, 1929, 1930, 1929, 1931, 1930, 1930, 1931, 1932, 1931, 1933, 1932, - 1932, 1933, 1934, 1933, 1935, 1934, 1934, 1935, 1936, 1935, 1937, 1936, - 1936, 1937, 1938, 1937, 1939, 1938, 1938, 1939, 1920, 1939, 1921, 1920, - 1920, 1920, 1918, 1920, 1918, 1918, 1918, 1918, 1926, 1918, 1926, 1926, - 1926, 1926, 1924, 1926, 1924, 1924, 1924, 1924, 1928, 1924, 1928, 1928, - 1928, 1928, 1930, 1928, 1930, 1930, 1930, 1930, 1932, 1930, 1932, 1932, - 1932, 1932, 1934, 1932, 1934, 1934, 1934, 1934, 1936, 1934, 1936, 1936, - 1936, 1936, 1938, 1936, 1938, 1938, 1938, 1938, 1920, 1938, 1920, 1920, - 1940, 1941, 1942, 1941, 1943, 1942, 1942, 1943, 1944, 1943, 1945, 1944, - 1944, 1945, 1946, 1945, 1947, 1946, 1946, 1947, 1948, 1947, 1949, 1948, - 1948, 1949, 1950, 1949, 1951, 1950, 1950, 1951, 1940, 1951, 1941, 1940, - 1940, 1940, 1942, 1940, 1942, 1942, 1942, 1942, 1944, 1942, 1944, 1944, - 1944, 1944, 1946, 1944, 1946, 1946, 1946, 1946, 1948, 1946, 1948, 1948, - 1948, 1948, 1950, 1948, 1950, 1950, 1950, 1950, 1940, 1950, 1940, 1940, - 1948, 1949, 1946, 1949, 1947, 1946, 1946, 1947, 1944, 1947, 1945, 1944, - 1944, 1945, 1952, 1945, 1953, 1952, 1952, 1953, 1954, 1953, 1955, 1954, - 1954, 1955, 1956, 1955, 1957, 1956, 1956, 1957, 1958, 1957, 1959, 1958, - 1958, 1959, 1960, 1959, 1961, 1960, 1960, 1961, 1934, 1961, 1935, 1934, - 1934, 1935, 1932, 1935, 1933, 1932, 1932, 1933, 1930, 1933, 1931, 1930, - 1930, 1931, 1928, 1931, 1929, 1928, 1928, 1929, 1948, 1929, 1949, 1948, - 1948, 1948, 1946, 1948, 1946, 1946, 1946, 1946, 1944, 1946, 1944, 1944, - 1944, 1944, 1952, 1944, 1952, 1952, 1952, 1952, 1954, 1952, 1954, 1954, - 1954, 1954, 1956, 1954, 1956, 1956, 1956, 1956, 1958, 1956, 1958, 1958, - 1958, 1958, 1960, 1958, 1960, 1960, 1960, 1960, 1934, 1960, 1934, 1934, - 1934, 1934, 1932, 1934, 1932, 1932, 1932, 1932, 1930, 1932, 1930, 1930, - 1930, 1930, 1928, 1930, 1928, 1928, 1928, 1928, 1948, 1928, 1948, 1948, - 283, 284, 1962, 284, 308, 1962, 1962, 308, 1963, 308, 1964, 1963, - 1963, 1964, 1965, 1964, 1966, 1965, 1965, 1966, 1967, 1966, 1968, 1967, - 1967, 1968, 285, 1968, 286, 285, 285, 286, 283, 286, 284, 283, - 283, 283, 1962, 283, 1962, 1962, 1962, 1962, 1963, 1962, 1963, 1963, - 1963, 1963, 1965, 1963, 1965, 1965, 1965, 1965, 1967, 1965, 1967, 1967, - 1967, 1967, 285, 1967, 285, 285, 285, 285, 283, 285, 283, 283, - 289, 290, 1969, 290, 1970, 1969, 1969, 1970, 1971, 1970, 1972, 1971, - 1971, 1972, 1973, 1972, 1974, 1973, 1973, 1974, 1975, 1974, 1976, 1975, - 1975, 1976, 1977, 1976, 1978, 1977, 1977, 1978, 1979, 1978, 306, 1979, - 1979, 306, 281, 306, 282, 281, 281, 282, 289, 282, 290, 289, - 289, 289, 1969, 289, 1969, 1969, 1969, 1969, 1971, 1969, 1971, 1971, - 1971, 1971, 1973, 1971, 1973, 1973, 1973, 1973, 1975, 1973, 1975, 1975, - 1975, 1975, 1977, 1975, 1977, 1977, 1977, 1977, 1979, 1977, 1979, 1979, - 1979, 1979, 281, 1979, 281, 281, 281, 281, 289, 281, 289, 289, - 1533, 1534, 1531, 1534, 1532, 1531, 1531, 1532, 1632, 1532, 1633, 1632, - 1632, 1633, 1630, 1633, 1631, 1630, 1630, 1631, 1640, 1631, 1619, 1640, - 1640, 1619, 1980, 1619, 1617, 1980, 1980, 1617, 1981, 1617, 1615, 1981, - 1981, 1615, 1533, 1615, 1534, 1533, 1533, 1533, 1531, 1533, 1531, 1531, - 1531, 1531, 1632, 1531, 1632, 1632, 1632, 1632, 1630, 1632, 1630, 1630, - 1630, 1630, 1640, 1630, 1640, 1640, 1640, 1640, 1980, 1640, 1980, 1980, - 1980, 1980, 1981, 1980, 1981, 1981, 1981, 1981, 1533, 1981, 1533, 1533, - 511, 512, 509, 512, 510, 509, 509, 510, 1982, 510, 618, 1982, - 1982, 618, 1983, 618, 616, 1983, 1983, 616, 1984, 616, 1985, 1984, - 1984, 1985, 1986, 1985, 1987, 1986, 1986, 1987, 625, 1987, 626, 625, - 625, 626, 631, 626, 632, 631, 631, 632, 511, 632, 512, 511, - 511, 511, 509, 511, 509, 509, 509, 509, 1982, 509, 1982, 1982, - 1982, 1982, 1983, 1982, 1983, 1983, 1983, 1983, 1984, 1983, 1984, 1984, - 1984, 1984, 1986, 1984, 1986, 1986, 1986, 1986, 625, 1986, 625, 625, - 625, 625, 631, 625, 631, 631, 631, 631, 511, 631, 511, 511, - 491, 492, 489, 492, 490, 489, 489, 490, 1988, 490, 1989, 1988, - 1988, 1989, 1990, 1989, 1991, 1990, 1990, 1991, 1992, 1991, 1993, 1992, - 1992, 1993, 1994, 1993, 1995, 1994, 1994, 1995, 491, 1995, 492, 491, - 491, 491, 489, 491, 489, 489, 489, 489, 1988, 489, 1988, 1988, - 1988, 1988, 1990, 1988, 1990, 1990, 1990, 1990, 1992, 1990, 1992, 1992, - 1992, 1992, 1994, 1992, 1994, 1994, 1994, 1994, 491, 1994, 491, 491, - 1996, 1997, 1998, 1997, 1999, 1998, 1998, 1999, 2000, 1999, 2001, 2000, - 2000, 2001, 2002, 2001, 2003, 2002, 2002, 2003, 2004, 2003, 2005, 2004, - 2004, 2005, 2006, 2005, 2007, 2006, 2006, 2007, 2008, 2007, 2009, 2008, - 2008, 2009, 2010, 2009, 2011, 2010, 2010, 2011, 2012, 2011, 2013, 2012, - 2012, 2013, 2014, 2013, 2015, 2014, 2014, 2015, 2016, 2015, 2017, 2016, - 2016, 2017, 2018, 2017, 2019, 2018, 2018, 2019, 2020, 2019, 2021, 2020, - 2020, 2021, 1996, 2021, 1997, 1996, 1996, 1996, 1998, 1996, 1998, 1998, - 1998, 1998, 2000, 1998, 2000, 2000, 2000, 2000, 2002, 2000, 2002, 2002, - 2002, 2002, 2004, 2002, 2004, 2004, 2004, 2004, 2006, 2004, 2006, 2006, - 2006, 2006, 2008, 2006, 2008, 2008, 2008, 2008, 2010, 2008, 2010, 2010, - 2010, 2010, 2012, 2010, 2012, 2012, 2012, 2012, 2014, 2012, 2014, 2014, - 2014, 2014, 2016, 2014, 2016, 2016, 2016, 2016, 2018, 2016, 2018, 2018, - 2018, 2018, 2020, 2018, 2020, 2020, 2020, 2020, 1996, 2020, 1996, 1996, - 2022, 2023, 2024, 2023, 2025, 2024, 2024, 2025, 2026, 2025, 2027, 2026, - 2026, 2027, 2028, 2027, 2029, 2028, 2028, 2029, 2030, 2029, 2031, 2030, - 2030, 2031, 2032, 2031, 2033, 2032, 2032, 2033, 2034, 2033, 2035, 2034, - 2034, 2035, 2036, 2035, 2037, 2036, 2036, 2037, 2038, 2037, 2039, 2038, - 2038, 2039, 2040, 2039, 2041, 2040, 2040, 2041, 2042, 2041, 2043, 2042, - 2042, 2043, 2044, 2043, 2045, 2044, 2044, 2045, 2046, 2045, 2047, 2046, - 2046, 2047, 2048, 2047, 2049, 2048, 2048, 2049, 2050, 2049, 2051, 2050, - 2050, 2051, 2052, 2051, 2053, 2052, 2052, 2053, 2054, 2053, 2055, 2054, - 2054, 2055, 2056, 2055, 2057, 2056, 2056, 2057, 2058, 2057, 2059, 2058, - 2058, 2059, 2060, 2059, 2061, 2060, 2060, 2061, 2062, 2061, 2063, 2062, - 2062, 2063, 2064, 2063, 2065, 2064, 2064, 2065, 2066, 2065, 2067, 2066, - 2066, 2067, 2068, 2067, 2069, 2068, 2068, 2069, 2070, 2069, 2071, 2070, - 2070, 2071, 2072, 2071, 2073, 2072, 2072, 2073, 2074, 2073, 2075, 2074, - 2074, 2075, 2076, 2075, 2077, 2076, 2076, 2077, 2078, 2077, 2079, 2078, - 2078, 2079, 2080, 2079, 2081, 2080, 2080, 2081, 2082, 2081, 2083, 2082, - 2082, 2083, 2084, 2083, 2085, 2084, 2084, 2085, 2086, 2085, 2087, 2086, - 2086, 2087, 2088, 2087, 2089, 2088, 2088, 2089, 2090, 2089, 2091, 2090, - 2090, 2091, 2092, 2091, 2093, 2092, 2092, 2093, 2094, 2093, 2095, 2094, - 2094, 2095, 2096, 2095, 2097, 2096, 2096, 2097, 2098, 2097, 2099, 2098, - 2098, 2099, 2100, 2099, 2101, 2100, 2100, 2101, 2102, 2101, 2103, 2102, - 2102, 2103, 2104, 2103, 2105, 2104, 2104, 2105, 2106, 2105, 1999, 2106, - 2106, 1999, 2107, 1999, 1997, 2107, 2107, 1997, 2108, 1997, 2109, 2108, - 2108, 2109, 2110, 2109, 2111, 2110, 2110, 2111, 2112, 2111, 2113, 2112, - 2112, 2113, 2114, 2113, 2115, 2114, 2114, 2115, 2116, 2115, 2117, 2116, - 2116, 2117, 2022, 2117, 2023, 2022, 2022, 2022, 2024, 2022, 2024, 2024, - 2024, 2024, 2026, 2024, 2026, 2026, 2026, 2026, 2028, 2026, 2028, 2028, - 2028, 2028, 2030, 2028, 2030, 2030, 2030, 2030, 2032, 2030, 2032, 2032, - 2032, 2032, 2034, 2032, 2034, 2034, 2034, 2034, 2036, 2034, 2036, 2036, - 2036, 2036, 2038, 2036, 2038, 2038, 2038, 2038, 2040, 2038, 2040, 2040, - 2040, 2040, 2042, 2040, 2042, 2042, 2042, 2042, 2044, 2042, 2044, 2044, - 2044, 2044, 2046, 2044, 2046, 2046, 2046, 2046, 2048, 2046, 2048, 2048, - 2048, 2048, 2050, 2048, 2050, 2050, 2050, 2050, 2052, 2050, 2052, 2052, - 2052, 2052, 2054, 2052, 2054, 2054, 2054, 2054, 2056, 2054, 2056, 2056, - 2056, 2056, 2058, 2056, 2058, 2058, 2058, 2058, 2060, 2058, 2060, 2060, - 2060, 2060, 2062, 2060, 2062, 2062, 2062, 2062, 2064, 2062, 2064, 2064, - 2064, 2064, 2066, 2064, 2066, 2066, 2066, 2066, 2068, 2066, 2068, 2068, - 2068, 2068, 2070, 2068, 2070, 2070, 2070, 2070, 2072, 2070, 2072, 2072, - 2072, 2072, 2074, 2072, 2074, 2074, 2074, 2074, 2076, 2074, 2076, 2076, - 2076, 2076, 2078, 2076, 2078, 2078, 2078, 2078, 2080, 2078, 2080, 2080, - 2080, 2080, 2082, 2080, 2082, 2082, 2082, 2082, 2084, 2082, 2084, 2084, - 2084, 2084, 2086, 2084, 2086, 2086, 2086, 2086, 2088, 2086, 2088, 2088, - 2088, 2088, 2090, 2088, 2090, 2090, 2090, 2090, 2092, 2090, 2092, 2092, - 2092, 2092, 2094, 2092, 2094, 2094, 2094, 2094, 2096, 2094, 2096, 2096, - 2096, 2096, 2098, 2096, 2098, 2098, 2098, 2098, 2100, 2098, 2100, 2100, - 2100, 2100, 2102, 2100, 2102, 2102, 2102, 2102, 2104, 2102, 2104, 2104, - 2104, 2104, 2106, 2104, 2106, 2106, 2106, 2106, 2107, 2106, 2107, 2107, - 2107, 2107, 2108, 2107, 2108, 2108, 2108, 2108, 2110, 2108, 2110, 2110, - 2110, 2110, 2112, 2110, 2112, 2112, 2112, 2112, 2114, 2112, 2114, 2114, - 2114, 2114, 2116, 2114, 2116, 2116, 2116, 2116, 2022, 2116, 2022, 2022, - 2118, 2119, 2120, 2119, 2121, 2120, 2120, 2121, 311, 2121, 2122, 311, - 311, 2122, 317, 2122, 2123, 317, 317, 2123, 2118, 2123, 2119, 2118, - 2118, 2118, 2120, 2118, 2120, 2120, 2120, 2120, 311, 2120, 311, 311, - 311, 311, 317, 311, 317, 317, 317, 317, 2118, 317, 2118, 2118, - 2122, 2121, 2119, 2123, 2122, 2119, 2118, 2124, 2125, 2124, 2126, 2125, - 2125, 2126, 2127, 2126, 2128, 2127, 2127, 2128, 2120, 2128, 2129, 2120, - 2120, 2129, 2118, 2129, 2124, 2118, 2118, 2118, 2125, 2118, 2125, 2125, - 2125, 2125, 2127, 2125, 2127, 2127, 2127, 2127, 2120, 2127, 2120, 2120, - 2120, 2120, 2118, 2120, 2118, 2118, 984, 891, 982, 891, 983, 982, - 982, 983, 2130, 983, 2131, 2130, 2130, 2131, 882, 2131, 883, 882, - 882, 883, 880, 883, 881, 880, 880, 881, 878, 881, 879, 878, - 878, 879, 876, 879, 877, 876, 876, 877, 874, 877, 875, 874, - 874, 875, 2132, 875, 893, 2132, 2132, 893, 984, 893, 891, 984, - 984, 984, 982, 984, 982, 982, 982, 982, 2130, 982, 2130, 2130, - 2130, 2130, 882, 2130, 882, 882, 882, 882, 880, 882, 880, 880, - 880, 880, 878, 880, 878, 878, 878, 878, 876, 878, 876, 876, - 876, 876, 874, 876, 874, 874, 874, 874, 2132, 874, 2132, 2132, - 2132, 2132, 984, 2132, 984, 984, 2133, 2134, 2135, 2134, 524, 2135, - 2135, 524, 2136, 524, 548, 2136, 2136, 548, 2137, 548, 2138, 2137, - 2137, 2138, 517, 2138, 518, 517, 517, 518, 515, 518, 516, 515, - 515, 516, 2133, 516, 2134, 2133, 2133, 2133, 2135, 2133, 2135, 2135, - 2135, 2135, 2136, 2135, 2136, 2136, 2136, 2136, 2137, 2136, 2137, 2137, - 2137, 2137, 517, 2137, 517, 517, 517, 517, 515, 517, 515, 515, - 515, 515, 2133, 515, 2133, 2133, 543, 544, 2139, 544, 2140, 2139, - 2139, 2140, 2141, 2140, 646, 2141, 2141, 646, 2142, 646, 644, 2142, - 2142, 644, 2143, 644, 2144, 2143, 2143, 2144, 2145, 2144, 2138, 2145, - 2145, 2138, 547, 2138, 548, 547, 547, 548, 545, 548, 546, 545, - 545, 546, 543, 546, 544, 543, 543, 543, 2139, 543, 2139, 2139, - 2139, 2139, 2141, 2139, 2141, 2141, 2141, 2141, 2142, 2141, 2142, 2142, - 2142, 2142, 2143, 2142, 2143, 2143, 2143, 2143, 2145, 2143, 2145, 2145, - 2145, 2145, 547, 2145, 547, 547, 547, 547, 545, 547, 545, 545, - 545, 545, 543, 545, 543, 543, 1986, 1987, 1984, 1987, 1985, 1984, - 1984, 1985, 2146, 1985, 2147, 2146, 2146, 2147, 2148, 2147, 2144, 2148, - 2148, 2144, 643, 2144, 644, 643, 643, 644, 641, 644, 642, 641, - 641, 642, 1986, 642, 1987, 1986, 1986, 1986, 1984, 1986, 1984, 1984, - 1984, 1984, 2146, 1984, 2146, 2146, 2146, 2146, 2148, 2146, 2148, 2148, - 2148, 2148, 643, 2148, 643, 643, 643, 643, 641, 643, 641, 641, - 641, 641, 1986, 641, 1986, 1986, 2143, 2144, 2149, 2144, 2147, 2149, - 2149, 2147, 2150, 2147, 1985, 2150, 2150, 1985, 615, 1985, 616, 615, - 615, 616, 621, 616, 520, 621, 621, 520, 2151, 520, 518, 2151, - 2151, 518, 2145, 518, 2138, 2145, 2145, 2138, 2143, 2138, 2144, 2143, - 2143, 2143, 2149, 2143, 2149, 2149, 2149, 2149, 2150, 2149, 2150, 2150, - 2150, 2150, 615, 2150, 615, 615, 615, 615, 621, 615, 621, 621, - 621, 621, 2151, 621, 2151, 2151, 2151, 2151, 2145, 2151, 2145, 2145, - 2145, 2145, 2143, 2145, 2143, 2143, 2152, 538, 2153, 538, 634, 2153, - 2153, 634, 2154, 634, 2155, 2154, 2154, 2155, 2156, 2155, 650, 2156, - 2156, 650, 2157, 650, 540, 2157, 2157, 540, 2158, 540, 2159, 2158, - 2158, 2159, 2152, 2159, 538, 2152, 2160, 2152, 2161, 2152, 2153, 2161, - 2161, 2153, 2162, 2153, 2154, 2162, 2162, 2154, 2163, 2154, 2156, 2163, - 2163, 2156, 2157, 2156, 2157, 2157, 2157, 2157, 2164, 2157, 2158, 2164, - 2164, 2158, 2160, 2158, 2152, 2160, 2165, 2166, 2167, 2166, 2168, 2167, - 2167, 2168, 2169, 2168, 2170, 2169, 2169, 2170, 2171, 2170, 1602, 2171, - 2171, 1602, 2172, 1602, 1629, 2172, 2172, 1629, 2173, 1629, 2174, 2173, - 2173, 2174, 2175, 2174, 2176, 2175, 2175, 2176, 2177, 2176, 1556, 2177, - 2177, 1556, 2178, 1556, 1554, 2178, 2178, 1554, 2179, 1554, 1582, 2179, - 2179, 1582, 2165, 1582, 2166, 2165, 2165, 2165, 2167, 2165, 2167, 2167, - 2167, 2167, 2169, 2167, 2169, 2169, 2169, 2169, 2171, 2169, 2171, 2171, - 2171, 2171, 2172, 2171, 2172, 2172, 2172, 2172, 2173, 2172, 2173, 2173, - 2173, 2173, 2175, 2173, 2175, 2175, 2175, 2175, 2177, 2175, 2177, 2177, - 2177, 2177, 2178, 2177, 2178, 2178, 2178, 2178, 2179, 2178, 2179, 2179, - 2179, 2179, 2165, 2179, 2165, 2165, 1561, 1540, 2180, 1540, 1538, 2180, - 2180, 1538, 2181, 1538, 1610, 2181, 2181, 1610, 2182, 1610, 1608, 2182, - 2182, 1608, 2183, 1608, 1606, 2183, 2183, 1606, 2184, 1606, 1604, 2184, - 2184, 1604, 2185, 1604, 1602, 2185, 2185, 1602, 2186, 1602, 2170, 2186, - 2186, 2170, 2187, 2170, 2168, 2187, 2187, 2168, 2188, 2168, 2166, 2188, - 2188, 2166, 1581, 2166, 1582, 1581, 1581, 1582, 1579, 1582, 1580, 1579, - 1579, 1580, 1566, 1580, 1567, 1566, 1566, 1567, 1564, 1567, 1565, 1564, - 1564, 1565, 1562, 1565, 1563, 1562, 1562, 1563, 1561, 1563, 1540, 1561, - 1561, 1561, 2180, 1561, 2180, 2180, 2180, 2180, 2181, 2180, 2181, 2181, - 2181, 2181, 2182, 2181, 2182, 2182, 2182, 2182, 2183, 2182, 2183, 2183, - 2183, 2183, 2184, 2183, 2184, 2184, 2184, 2184, 2185, 2184, 2185, 2185, - 2185, 2185, 2186, 2185, 2186, 2186, 2186, 2186, 2187, 2186, 2187, 2187, - 2187, 2187, 2188, 2187, 2188, 2188, 2188, 2188, 1581, 2188, 1581, 1581, - 1581, 1581, 1579, 1581, 1579, 1579, 1579, 1579, 1566, 1579, 1566, 1566, - 1566, 1566, 1564, 1566, 1564, 1564, 1564, 1564, 1562, 1564, 1562, 1562, - 1562, 1562, 1561, 1562, 1561, 1561, 2189, 1318, 2190, 1318, 1300, 2190, - 2190, 1300, 2191, 1300, 1298, 2191, 2191, 1298, 2192, 1298, 2193, 2192, - 2192, 2193, 2194, 2193, 1320, 2194, 2194, 1320, 2189, 1320, 1318, 2189, - 2189, 2189, 2190, 2189, 2190, 2190, 2190, 2190, 2191, 2190, 2191, 2191, - 2191, 2191, 2192, 2191, 2192, 2192, 2192, 2192, 2194, 2192, 2194, 2194, - 2194, 2194, 2189, 2194, 2189, 2189, 2205, 2198, 2206, 2198, 2196, 2206, - 2206, 2196, 2207, 2196, 2204, 2207, 2207, 2204, 2208, 2204, 2209, 2208, - 2208, 2209, 2210, 2209, 2211, 2210, 2210, 2211, 2212, 2211, 2213, 2212, - 2212, 2213, 2214, 2213, 2215, 2214, 2214, 2215, 2216, 2215, 2217, 2216, - 2216, 2217, 2218, 2217, 2219, 2218, 2218, 2219, 2220, 2219, 2221, 2220, - 2220, 2221, 2222, 2221, 2223, 2222, 2222, 2223, 2224, 2223, 2225, 2224, - 2224, 2225, 2226, 2225, 2227, 2226, 2226, 2227, 2228, 2227, 2229, 2228, - 2228, 2229, 2230, 2229, 2231, 2230, 2230, 2231, 2232, 2231, 2233, 2232, - 2232, 2233, 2234, 2233, 2235, 2234, 2234, 2235, 2236, 2235, 2237, 2236, - 2236, 2237, 2205, 2237, 2198, 2205, 2205, 2205, 2206, 2205, 2206, 2206, - 2206, 2206, 2207, 2206, 2207, 2207, 2207, 2207, 2208, 2207, 2208, 2208, - 2208, 2208, 2210, 2208, 2210, 2210, 2210, 2210, 2212, 2210, 2212, 2212, - 2212, 2212, 2214, 2212, 2214, 2214, 2214, 2214, 2216, 2214, 2216, 2216, - 2216, 2216, 2218, 2216, 2218, 2218, 2218, 2218, 2220, 2218, 2220, 2220, - 2220, 2220, 2222, 2220, 2222, 2222, 2222, 2222, 2224, 2222, 2224, 2224, - 2224, 2224, 2226, 2224, 2226, 2226, 2226, 2226, 2228, 2226, 2228, 2228, - 2228, 2228, 2230, 2228, 2230, 2230, 2230, 2230, 2232, 2230, 2232, 2232, - 2232, 2232, 2234, 2232, 2234, 2234, 2234, 2234, 2236, 2234, 2236, 2236, - 2236, 2236, 2205, 2236, 2205, 2205, 2238, 2239, 2240, 2239, 2241, 2240, - 2240, 2241, 2242, 2241, 2243, 2242, 2242, 2243, 2244, 2243, 2245, 2244, - 2244, 2245, 2246, 2245, 2247, 2246, 2246, 2247, 2248, 2247, 2249, 2248, - 2248, 2249, 2250, 2249, 2251, 2250, 2250, 2251, 2252, 2251, 2253, 2252, - 2252, 2253, 2254, 2253, 2255, 2254, 2254, 2255, 2256, 2255, 2257, 2256, - 2256, 2257, 2238, 2257, 2239, 2238, 2238, 2238, 2240, 2238, 2240, 2240, - 2240, 2240, 2242, 2240, 2242, 2242, 2242, 2242, 2244, 2242, 2244, 2244, - 2244, 2244, 2246, 2244, 2246, 2246, 2246, 2246, 2248, 2246, 2248, 2248, - 2248, 2248, 2250, 2248, 2250, 2250, 2250, 2250, 2252, 2250, 2252, 2252, - 2252, 2252, 2254, 2252, 2254, 2254, 2254, 2254, 2256, 2254, 2256, 2256, - 2256, 2256, 2238, 2256, 2238, 2238, 2258, 2247, 2259, 2247, 2245, 2259, - 2259, 2245, 2260, 2245, 2261, 2260, 2260, 2261, 2262, 2261, 2263, 2262, - 2262, 2263, 2264, 2263, 2265, 2264, 2264, 2265, 2258, 2265, 2247, 2258, - 2258, 2258, 2259, 2258, 2259, 2259, 2259, 2259, 2260, 2259, 2260, 2260, - 2260, 2260, 2262, 2260, 2262, 2262, 2262, 2262, 2264, 2262, 2264, 2264, - 2264, 2264, 2258, 2264, 2258, 2258, 2266, 2241, 2267, 2241, 2239, 2267, - 2267, 2239, 2268, 2239, 2257, 2268, 2268, 2257, 2269, 2257, 2270, 2269, - 2269, 2270, 2271, 2270, 2272, 2271, 2271, 2272, 2273, 2272, 2274, 2273, - 2273, 2274, 2275, 2274, 2276, 2275, 2275, 2276, 2277, 2276, 2278, 2277, - 2277, 2278, 2279, 2278, 2280, 2279, 2279, 2280, 2281, 2280, 2282, 2281, - 2281, 2282, 2266, 2282, 2241, 2266, 2266, 2266, 2267, 2266, 2267, 2267, - 2267, 2267, 2268, 2267, 2268, 2268, 2268, 2268, 2269, 2268, 2269, 2269, - 2269, 2269, 2271, 2269, 2271, 2271, 2271, 2271, 2273, 2271, 2273, 2273, - 2273, 2273, 2275, 2273, 2275, 2275, 2275, 2275, 2277, 2275, 2277, 2277, - 2277, 2277, 2279, 2277, 2279, 2279, 2279, 2279, 2281, 2279, 2281, 2281, - 2281, 2281, 2266, 2281, 2266, 2266, 2283, 2284, 2285, 2284, 2286, 2285, - 2285, 2286, 2287, 2286, 2288, 2287, 2287, 2288, 2289, 2288, 2290, 2289, - 2289, 2290, 2291, 2290, 2292, 2291, 2291, 2292, 2293, 2292, 2294, 2293, - 2293, 2294, 2295, 2294, 2296, 2295, 2295, 2296, 2297, 2296, 2298, 2297, - 2297, 2298, 2299, 2298, 2300, 2299, 2299, 2300, 2301, 2300, 2302, 2301, - 2301, 2302, 2303, 2302, 2304, 2303, 2303, 2304, 2305, 2304, 2306, 2305, - 2305, 2306, 2307, 2306, 2308, 2307, 2307, 2308, 2283, 2308, 2284, 2283, - 2283, 2283, 2285, 2283, 2285, 2285, 2285, 2285, 2287, 2285, 2287, 2287, - 2287, 2287, 2289, 2287, 2289, 2289, 2289, 2289, 2291, 2289, 2291, 2291, - 2291, 2291, 2293, 2291, 2293, 2293, 2293, 2293, 2295, 2293, 2295, 2295, - 2295, 2295, 2297, 2295, 2297, 2297, 2297, 2297, 2299, 2297, 2299, 2299, - 2299, 2299, 2301, 2299, 2301, 2301, 2301, 2301, 2303, 2301, 2303, 2303, - 2303, 2303, 2305, 2303, 2305, 2305, 2305, 2305, 2307, 2305, 2307, 2307, - 2307, 2307, 2283, 2307, 2283, 2283, 2309, 2310, 2311, 2310, 2312, 2311, - 2311, 2312, 2313, 2312, 2314, 2313, 2313, 2314, 2315, 2314, 2316, 2315, - 2315, 2316, 2317, 2316, 2318, 2317, 2317, 2318, 2319, 2318, 2290, 2319, - 2319, 2290, 2320, 2290, 2288, 2320, 2320, 2288, 2321, 2288, 2286, 2321, - 2321, 2286, 2322, 2286, 2323, 2322, 2322, 2323, 2324, 2323, 2325, 2324, - 2324, 2325, 2326, 2325, 2327, 2326, 2326, 2327, 2328, 2327, 2329, 2328, - 2328, 2329, 2330, 2329, 2331, 2330, 2330, 2331, 2332, 2331, 2333, 2332, - 2332, 2333, 2309, 2333, 2310, 2309, 2309, 2309, 2311, 2309, 2311, 2311, - 2311, 2311, 2313, 2311, 2313, 2313, 2313, 2313, 2315, 2313, 2315, 2315, - 2315, 2315, 2317, 2315, 2317, 2317, 2317, 2317, 2319, 2317, 2319, 2319, - 2319, 2319, 2320, 2319, 2320, 2320, 2320, 2320, 2321, 2320, 2321, 2321, - 2321, 2321, 2322, 2321, 2322, 2322, 2322, 2322, 2324, 2322, 2324, 2324, - 2324, 2324, 2326, 2324, 2326, 2326, 2326, 2326, 2328, 2326, 2328, 2328, - 2328, 2328, 2330, 2328, 2330, 2330, 2330, 2330, 2332, 2330, 2332, 2332, - 2332, 2332, 2309, 2332, 2309, 2309, 2334, 2335, 2336, 2335, 2337, 2336, - 2336, 2337, 2338, 2337, 2339, 2338, 2338, 2339, 2340, 2339, 2341, 2340, - 2340, 2341, 2342, 2341, 2343, 2342, 2342, 2343, 2344, 2343, 2345, 2344, - 2344, 2345, 2346, 2345, 2347, 2346, 2346, 2347, 2348, 2347, 2349, 2348, - 2348, 2349, 2350, 2349, 2351, 2350, 2350, 2351, 2352, 2351, 2353, 2352, - 2352, 2353, 2354, 2353, 2355, 2354, 2354, 2355, 2356, 2355, 2357, 2356, - 2356, 2357, 2358, 2357, 2359, 2358, 2358, 2359, 2360, 2359, 2361, 2360, - 2360, 2361, 2362, 2361, 2363, 2362, 2362, 2363, 2364, 2363, 2365, 2364, - 2364, 2365, 2366, 2365, 2367, 2366, 2366, 2367, 2368, 2367, 2369, 2368, - 2368, 2369, 2334, 2369, 2335, 2334, 2334, 2334, 2336, 2334, 2336, 2336, - 2336, 2336, 2338, 2336, 2338, 2338, 2338, 2338, 2340, 2338, 2340, 2340, - 2340, 2340, 2342, 2340, 2342, 2342, 2342, 2342, 2344, 2342, 2344, 2344, - 2344, 2344, 2346, 2344, 2346, 2346, 2346, 2346, 2348, 2346, 2348, 2348, - 2348, 2348, 2350, 2348, 2350, 2350, 2350, 2350, 2352, 2350, 2352, 2352, - 2352, 2352, 2354, 2352, 2354, 2354, 2354, 2354, 2356, 2354, 2356, 2356, - 2356, 2356, 2358, 2356, 2358, 2358, 2358, 2358, 2360, 2358, 2360, 2360, - 2360, 2360, 2362, 2360, 2362, 2362, 2362, 2362, 2364, 2362, 2364, 2364, - 2364, 2364, 2366, 2364, 2366, 2366, 2366, 2366, 2368, 2366, 2368, 2368, - 2368, 2368, 2334, 2368, 2334, 2334, 2338, 2339, 2336, 2339, 2337, 2336, - 2336, 2337, 2370, 2337, 2371, 2370, 2370, 2371, 2372, 2371, 2373, 2372, - 2372, 2373, 2374, 2373, 2375, 2374, 2374, 2375, 2376, 2375, 2377, 2376, - 2376, 2377, 2378, 2377, 2379, 2378, 2378, 2379, 2380, 2379, 2381, 2380, - 2380, 2381, 2382, 2381, 2383, 2382, 2382, 2383, 2384, 2383, 2385, 2384, - 2384, 2385, 2386, 2385, 2387, 2386, 2386, 2387, 2338, 2387, 2339, 2338, - 2338, 2338, 2336, 2338, 2336, 2336, 2336, 2336, 2370, 2336, 2370, 2370, - 2370, 2370, 2372, 2370, 2372, 2372, 2372, 2372, 2374, 2372, 2374, 2374, - 2374, 2374, 2376, 2374, 2376, 2376, 2376, 2376, 2378, 2376, 2378, 2378, - 2378, 2378, 2380, 2378, 2380, 2380, 2380, 2380, 2382, 2380, 2382, 2382, - 2382, 2382, 2384, 2382, 2384, 2384, 2384, 2384, 2386, 2384, 2386, 2386, - 2386, 2386, 2338, 2386, 2338, 2338 - ] - }, - { - "id": "shape1_part2", - "type": "TRIANGLES", - "indices": [ - 40, 42, 44, 70, 72, 74, 76, 70, 74, 80, 82, 84, - 38, 32, 34, 38, 34, 36, 44, 46, 48, 40, 44, 48, - 28, 32, 38, 54, 56, 58, 54, 50, 52, 54, 48, 50, - 48, 54, 58, 60, 48, 58, 48, 60, 66, 62, 66, 60, - 66, 40, 48, 62, 64, 66, 30, 32, 28, 88, 90, 0, - 40, 26, 28, 4, 6, 8, 40, 70, 26, 40, 28, 38, - 24, 26, 76, 66, 68, 70, 66, 70, 40, 4, 10, 16, - 10, 4, 8, 14, 10, 12, 14, 16, 10, 24, 78, 22, - 70, 76, 26, 80, 86, 78, 86, 80, 84, 20, 86, 88, - 2, 20, 88, 2, 88, 0, 20, 78, 86, 78, 24, 76, - 20, 22, 78, 20, 16, 18, 2, 16, 20, 4, 16, 2, - 104, 100, 102, 98, 100, 104, 106, 96, 98, 106, 98, 104, - 106, 108, 92, 96, 106, 92, 96, 92, 94, 116, 118, 120, - 112, 114, 116, 110, 112, 116, 110, 116, 120, 148, 152, 146, - 152, 156, 158, 146, 142, 144, 150, 152, 148, 146, 158, 142, - 146, 152, 158, 154, 156, 152, 194, 190, 192, 208, 194, 196, - 208, 196, 198, 207, 198, 160, 208, 198, 207, 194, 188, 190, - 200, 194, 208, 200, 188, 194, 164, 206, 160, 164, 160, 162, - 206, 164, 166, 207, 160, 206, 200, 184, 188, 184, 186, 188, - 200, 201, 184, 184, 201, 202, 182, 184, 202, 174, 203, 204, - 176, 202, 203, 176, 203, 174, 178, 202, 176, 180, 182, 202, - 178, 180, 202, 172, 174, 204, 166, 205, 206, 170, 166, 168, - 170, 205, 166, 204, 205, 170, 172, 204, 170, 229, 209, 211, - 215, 229, 211, 215, 211, 213, 223, 219, 221, 217, 219, 223, - 225, 217, 223, 215, 217, 225, 227, 229, 215, 225, 227, 215, - 231, 32, 30, 251, 253, 255, 30, 28, 26, 233, 30, 26, - 235, 30, 233, 245, 247, 251, 249, 251, 247, 255, 245, 251, - 235, 243, 245, 255, 231, 30, 255, 235, 245, 235, 255, 30, - 235, 241, 243, 237, 239, 235, 239, 241, 235, 263, 257, 259, - 263, 259, 261, 265, 271, 257, 263, 265, 257, 267, 271, 265, - 269, 271, 267, 275, 277, 279, 273, 275, 279, 281, 283, 285, - 289, 281, 285, 289, 285, 287, 299, 303, 293, 291, 293, 303, - 293, 295, 299, 301, 303, 299, 297, 299, 295, 305, 307, 309, - 310, 305, 309, 311, 315, 317, 313, 315, 311, 347, 349, 351, - 365, 351, 353, 367, 347, 351, 363, 365, 353, 363, 353, 355, - 359, 355, 357, 361, 355, 359, 363, 355, 361, 365, 367, 351, - 345, 347, 367, 381, 383, 385, 387, 370, 385, 381, 385, 370, - 369, 370, 387, 371, 381, 370, 372, 379, 381, 371, 372, 381, - 373, 379, 372, 374, 377, 379, 373, 374, 379, 375, 377, 374, - 389, 395, 399, 391, 393, 389, 393, 395, 389, 397, 399, 395, - 409, 411, 413, 405, 409, 413, 405, 413, 415, 405, 415, 401, - 403, 405, 401, 407, 409, 405, 427, 429, 431, 423, 427, 431, - 425, 427, 423, 423, 431, 433, 421, 423, 433, 421, 433, 417, - 419, 421, 417, 436, 438, 440, 442, 436, 440, 435, 436, 442, - 450, 435, 442, 450, 442, 444, 449, 450, 444, 449, 444, 446, - 448, 449, 446, 472, 474, 475, 468, 470, 472, 477, 472, 475, - 477, 475, 476, 466, 468, 472, 466, 472, 477, 464, 466, 477, - 464, 477, 478, 480, 478, 479, 452, 480, 451, 452, 478, 480, - 462, 464, 478, 478, 454, 462, 452, 454, 478, 460, 462, 454, - 458, 460, 454, 456, 458, 454, 295, 481, 483, 293, 481, 295, - 487, 303, 301, 301, 299, 297, 485, 487, 301, 485, 301, 297, - 495, 491, 493, 489, 491, 495, 493, 499, 501, 497, 499, 493, - 495, 493, 501, 497, 503, 499, 507, 503, 497, 505, 507, 497, - 513, 515, 517, 521, 513, 517, 521, 517, 519, 511, 513, 521, - 511, 521, 509, 545, 523, 525, 545, 525, 527, 547, 523, 545, - 543, 545, 527, 527, 529, 531, 535, 531, 533, 531, 543, 527, - 535, 543, 531, 535, 541, 543, 539, 541, 535, 539, 535, 537, - 555, 114, 112, 557, 112, 110, 559, 555, 112, 559, 112, 557, - 553, 555, 559, 559, 551, 553, 561, 551, 559, 561, 549, 551, - 563, 549, 561, 571, 573, 549, 563, 571, 549, 565, 571, 563, - 569, 571, 565, 567, 569, 565, 583, 579, 581, 589, 579, 583, - 587, 589, 583, 587, 583, 585, 591, 579, 589, 595, 597, 599, - 601, 595, 599, 575, 591, 606, 579, 575, 577, 591, 575, 579, - 606, 591, 593, 606, 593, 595, 605, 606, 595, 605, 595, 601, - 605, 601, 603, 611, 579, 607, 611, 607, 609, 581, 579, 611, - 613, 581, 611, 620, 621, 615, 619, 620, 615, 617, 619, 615, - 622, 624, 605, 622, 605, 603, 627, 629, 631, 625, 627, 631, - 635, 624, 622, 636, 624, 635, 639, 633, 635, 622, 637, 639, - 639, 635, 622, 648, 643, 645, 648, 645, 647, 643, 648, 649, - 655, 643, 649, 655, 649, 651, 641, 643, 655, 653, 655, 651, - 674, 668, 670, 672, 674, 670, 676, 674, 672, 120, 676, 672, - 118, 676, 120, 684, 668, 678, 684, 678, 680, 682, 684, 680, - 686, 668, 684, 670, 668, 686, 694, 696, 698, 704, 692, 702, - 690, 704, 688, 690, 692, 704, 694, 700, 702, 694, 698, 700, - 702, 692, 694, 720, 721, 694, 720, 694, 692, 719, 720, 692, - 712, 719, 692, 708, 712, 692, 706, 708, 692, 710, 712, 708, - 716, 719, 712, 714, 716, 712, 718, 719, 716, 732, 734, 736, - 728, 730, 732, 742, 724, 736, 732, 736, 724, 728, 732, 724, - 736, 738, 740, 740, 742, 736, 726, 728, 724, 754, 748, 750, - 754, 750, 752, 722, 724, 754, 742, 744, 746, 742, 748, 724, - 746, 748, 742, 754, 724, 748, 722, 754, 756, 764, 766, 768, - 758, 760, 762, 764, 768, 770, 772, 758, 762, 774, 758, 772, - 770, 772, 762, 770, 762, 764, 768, 778, 780, 768, 780, 782, - 770, 768, 782, 782, 784, 776, 770, 782, 776, 780, 786, 788, - 784, 780, 788, 782, 780, 784, 790, 784, 788, 796, 776, 792, - 790, 792, 784, 776, 784, 792, 794, 796, 792, 830, 832, 834, - 838, 834, 836, 840, 842, 844, 820, 824, 826, 822, 824, 820, - 818, 820, 826, 816, 818, 826, 840, 814, 816, 814, 844, 812, - 826, 828, 830, 838, 826, 830, 838, 830, 834, 826, 838, 840, - 826, 840, 816, 810, 812, 848, 840, 844, 814, 846, 812, 844, - 848, 812, 846, 726, 724, 722, 726, 848, 728, 790, 786, 726, - 726, 780, 848, 780, 810, 848, 722, 790, 726, 788, 786, 790, - 810, 778, 808, 780, 726, 786, 780, 778, 810, 806, 808, 778, - 766, 802, 806, 804, 806, 802, 850, 790, 722, 802, 760, 800, - 806, 778, 766, 766, 778, 768, 792, 790, 850, 766, 760, 802, - 760, 766, 764, 762, 760, 764, 798, 800, 760, 758, 798, 760, - 868, 870, 852, 864, 866, 868, 864, 868, 856, 854, 868, 852, - 856, 868, 854, 862, 864, 856, 856, 858, 860, 862, 856, 860, - 882, 884, 886, 880, 882, 886, 888, 864, 862, 888, 880, 886, - 862, 880, 888, 862, 876, 880, 878, 880, 876, 872, 876, 862, - 874, 876, 872, 894, 896, 898, 892, 898, 890, 894, 898, 892, - 904, 906, 900, 902, 904, 900, 913, 908, 910, 913, 910, 912, - 916, 914, 915, 917, 914, 916, 906, 918, 920, 900, 906, 920, - 908, 924, 926, 910, 908, 926, 922, 924, 908, 936, 928, 930, - 936, 930, 932, 858, 936, 932, 932, 904, 858, 904, 932, 934, - 860, 904, 902, 860, 858, 904, 946, 948, 950, 952, 946, 950, - 960, 954, 956, 960, 956, 958, 940, 942, 944, 940, 944, 946, - 918, 938, 940, 920, 918, 940, 966, 920, 940, 940, 946, 952, - 940, 952, 954, 964, 966, 962, 940, 960, 966, 954, 960, 940, - 962, 966, 960, 972, 974, 968, 972, 968, 928, 970, 972, 928, - 970, 928, 936, 389, 974, 972, 391, 389, 972, 391, 972, 970, - 976, 391, 970, 978, 391, 976, 870, 976, 970, 870, 970, 852, - 866, 976, 870, 866, 870, 868, 988, 399, 397, 986, 988, 397, - 980, 985, 986, 397, 980, 986, 984, 980, 982, 985, 980, 984, - 993, 997, 999, 993, 999, 990, 995, 997, 993, 991, 993, 990, - 930, 968, 997, 930, 997, 995, 930, 995, 1000, 928, 968, 930, - 1006, 1030, 1002, 1004, 1006, 1002, 1006, 1028, 1030, 1024, 1028, 1006, - 1026, 1028, 1024, 1022, 1024, 1006, 1020, 1022, 1006, 1020, 1006, 1008, - 1010, 1020, 1008, 1018, 1020, 1010, 1018, 1014, 1016, 1010, 1012, 1018, - 1012, 1014, 1018, 1034, 1036, 1037, 1032, 1034, 1037, 1037, 1038, 1040, - 1032, 1037, 1040, 1046, 1042, 1044, 607, 1042, 1046, 609, 607, 1046, - 609, 1046, 1048, 1055, 1059, 1051, 1055, 1051, 1053, 1049, 1051, 1059, - 1057, 1059, 1055, 1004, 1002, 1061, 1004, 1061, 1049, 1059, 1004, 1049, - 1008, 1059, 1057, 1006, 1004, 1059, 1008, 1006, 1059, 1077, 1081, 1083, - 1079, 1081, 1077, 1067, 1077, 1083, 1063, 1067, 1083, 1071, 1077, 1067, - 1069, 1071, 1067, 1073, 1077, 1071, 1075, 1077, 1073, 1065, 1067, 1063, - 1083, 1081, 1085, 1083, 1085, 1087, 1089, 1085, 1081, 1095, 1097, 1099, - 1042, 1091, 1093, 1042, 1093, 1095, 1109, 1095, 1099, 1109, 1099, 1101, - 1042, 1095, 1109, 1044, 1042, 1109, 1087, 1101, 1103, 1105, 1109, 1101, - 1105, 1101, 1087, 1085, 1105, 1087, 1107, 1109, 1105, 1119, 1065, 1063, - 1119, 1063, 1111, 1113, 1119, 1111, 1117, 1119, 1113, 1115, 1117, 1113, - 1125, 1075, 1073, 1123, 1075, 1125, 1113, 1127, 1115, 1127, 1129, 1115, - 1113, 1121, 1127, 1123, 1125, 1127, 1121, 1123, 1127, 1055, 1123, 1121, - 1053, 1123, 1055, 1133, 1135, 1137, 1141, 1131, 1137, 1141, 1137, 1139, - 1133, 1137, 1131, 1149, 1151, 1153, 1145, 1147, 1149, 1149, 1153, 1155, - 1145, 1149, 1155, 1143, 1145, 1155, 1141, 1139, 1145, 1141, 1145, 1143, - 1159, 1161, 409, 407, 1159, 409, 1159, 407, 1157, 1133, 1161, 1159, - 1133, 1159, 1135, 1243, 1245, 1247, 1243, 1247, 1249, 1237, 1239, 1241, - 1235, 1237, 1241, 1249, 1251, 1253, 1253, 1243, 1249, 1255, 1243, 1253, - 1241, 1243, 1255, 1227, 1229, 1231, 1233, 1227, 1231, 1221, 1223, 1225, - 1219, 1221, 1225, 1267, 1273, 1279, 1271, 1267, 1269, 1273, 1267, 1271, - 1273, 1275, 1277, 1279, 1273, 1277, 1281, 1267, 1279, 1283, 1267, 1281, - 1213, 1215, 1217, 1211, 1213, 1217, 1285, 1287, 1289, 1207, 1209, 1219, - 1217, 1219, 1209, 1211, 1217, 1209, 1235, 1241, 1255, 1225, 1207, 1219, - 1225, 1227, 1255, 1255, 1207, 1225, 1207, 1283, 1205, 1233, 1235, 1255, - 1255, 1227, 1233, 1257, 1207, 1255, 1257, 1261, 1207, 1259, 1261, 1257, - 1261, 1265, 1207, 1263, 1265, 1261, 1267, 1207, 1265, 1283, 1207, 1267, - 1295, 1289, 1291, 1295, 1291, 1293, 1205, 1289, 1201, 1285, 1205, 1283, - 1289, 1205, 1285, 1199, 1201, 1289, 1203, 1205, 1201, 1289, 1179, 1199, - 1295, 1169, 1289, 1165, 1169, 1295, 1163, 1165, 1295, 1167, 1169, 1165, - 1169, 1171, 1289, 1171, 1177, 1289, 1177, 1171, 1173, 1175, 1177, 1173, - 1177, 1179, 1289, 1185, 1199, 1179, 1185, 1179, 1181, 1183, 1185, 1181, - 1187, 1199, 1185, 1187, 1197, 1199, 1191, 1187, 1189, 1191, 1197, 1187, - 1197, 1191, 1193, 1195, 1197, 1193, 1303, 1305, 1307, 1307, 1309, 1311, - 1313, 1307, 1311, 1315, 1297, 1299, 1301, 1315, 1299, 1303, 1313, 1315, - 1303, 1307, 1313, 1315, 1301, 1303, 1319, 1321, 1323, 1317, 1319, 1323, - 1326, 1327, 1329, 1331, 1326, 1329, 1325, 1326, 1331, 1339, 1335, 1337, - 1339, 1333, 1335, 1340, 1333, 1339, 1341, 1333, 1340, 1343, 1345, 1347, - 1327, 1343, 1347, 1351, 1329, 1327, 1347, 1349, 1351, 1351, 1327, 1347, - 1331, 1329, 1351, 1535, 1537, 1539, 1543, 1539, 1541, 1535, 1539, 1543, - 1533, 1535, 1543, 1533, 1547, 1531, 1543, 1545, 1533, 1545, 1547, 1533, - 1549, 1531, 1547, 1557, 1559, 1551, 1553, 1555, 1557, 1553, 1557, 1551, - 1564, 1566, 1568, 1570, 1564, 1568, 1562, 1564, 1570, 1572, 1561, 1562, - 1572, 1562, 1570, 1581, 1553, 1551, 1573, 1581, 1551, 1577, 1573, 1575, - 1579, 1581, 1573, 1577, 1579, 1573, 1566, 1579, 1577, 1568, 1566, 1577, - 1583, 1585, 1587, 1597, 1583, 1587, 1597, 1587, 1589, 1591, 1595, 1589, - 1597, 1589, 1595, 1593, 1595, 1591, 1559, 1583, 1597, 1551, 1559, 1597, - 1551, 1597, 1595, 1573, 1551, 1595, 1599, 1573, 1595, 1593, 1599, 1595, - 1575, 1573, 1599, 1624, 1626, 1628, 1620, 1624, 1628, 1605, 1601, 1603, - 1601, 1620, 1628, 1620, 1601, 1605, 1622, 1624, 1620, 1618, 1620, 1605, - 1605, 1616, 1618, 1607, 1609, 1605, 1609, 1616, 1605, 1612, 1616, 1609, - 1612, 1609, 1611, 1613, 1616, 1612, 1614, 1616, 1613, 1638, 1636, 1637, - 1634, 1636, 1638, 1630, 1639, 1640, 1639, 1634, 1638, 1632, 1639, 1630, - 1632, 1634, 1639, 1657, 1659, 1641, 1643, 1657, 1641, 1655, 1657, 1643, - 1651, 1645, 1647, 1649, 1651, 1647, 1653, 1645, 1651, 1643, 1645, 1653, - 1655, 1643, 1653, 1653, 1665, 1655, 1667, 1655, 1665, 209, 1667, 1665, - 211, 209, 1665, 1653, 1663, 1665, 1661, 1663, 1653, 221, 1663, 1661, - 219, 1663, 221, 1671, 1677, 1679, 1669, 1671, 1679, 1659, 1669, 1679, - 1641, 1659, 1679, 1671, 1673, 1677, 1675, 1677, 1673, 1649, 1647, 1677, - 1675, 1649, 1677, 1681, 1683, 1685, 1687, 1681, 1685, 1671, 1681, 1687, - 1695, 1689, 1691, 1693, 1695, 1691, 1673, 1689, 1695, 1687, 1689, 1673, - 1671, 1687, 1673, 1723, 1725, 1727, 1721, 1723, 1727, 1711, 1715, 1717, - 1711, 1717, 1719, 1713, 1715, 1711, 1721, 1727, 1729, 1703, 1705, 1707, - 1703, 1707, 1709, 1697, 1699, 1701, 1697, 1701, 1703, 1697, 1703, 1709, - 1697, 1709, 1711, 1729, 1697, 1711, 1719, 1729, 1711, 1729, 1719, 1721, - 1732, 1734, 1731, 1733, 1734, 1732, 1737, 1738, 1735, 1737, 1735, 1736, - 1742, 1743, 1745, 1741, 1739, 1740, 1742, 1745, 1739, 1741, 1742, 1739, - 1767, 1769, 1747, 1749, 1767, 1747, 1683, 1767, 1749, 1685, 1683, 1749, - 1685, 1749, 1751, 1757, 1751, 1753, 1755, 1757, 1753, 1757, 1691, 1685, - 1757, 1685, 1751, 1691, 1757, 1759, 1765, 1761, 1763, 1759, 1761, 1765, - 1693, 1759, 1765, 1691, 1759, 1693, 1769, 1777, 1779, 1775, 1769, 1779, - 1747, 1769, 1775, 1781, 1775, 1779, 1773, 1775, 1781, 1753, 1771, 1773, - 1773, 1791, 1753, 1755, 1753, 1791, 1783, 1773, 1781, 1783, 1791, 1773, - 1793, 1755, 1791, 1785, 1789, 1791, 1785, 1791, 1783, 1787, 1789, 1785, - 1763, 1789, 1787, 1761, 1789, 1763, 1799, 1801, 1795, 1797, 1799, 1795, - 1807, 1809, 1811, 1811, 1803, 1805, 1807, 1811, 1805, 1815, 1817, 1819, - 1813, 1815, 1819, 1813, 1819, 1820, 1795, 1821, 1815, 1795, 1815, 1813, - 1797, 1795, 1813, 227, 1829, 1831, 225, 1823, 227, 1823, 1829, 227, - 1825, 1829, 1823, 1827, 1829, 1825, 1835, 1837, 1699, 1803, 1835, 1699, - 1833, 1835, 1803, 1838, 1803, 1699, 1697, 1838, 1699, 1805, 1803, 1838, - 1852, 1854, 1856, 1846, 1848, 1850, 1858, 1850, 1852, 1858, 1852, 1856, - 1846, 1850, 1858, 1862, 1846, 1858, 1862, 1858, 1860, 1862, 1844, 1846, - 1842, 1862, 1840, 1842, 1844, 1862, 1868, 1870, 1864, 1866, 1868, 1864, - 1874, 1876, 1878, 1872, 1874, 1878, 1884, 1886, 1887, 1880, 1882, 1884, - 1880, 1884, 1887, 1864, 1876, 1874, 1888, 1866, 1864, 1888, 1864, 1874, - 1850, 267, 265, 1850, 1892, 267, 1850, 1890, 1892, 1850, 265, 1852, - 1848, 1890, 1850, 1894, 1842, 1840, 1894, 1840, 1898, 1896, 1842, 1894, - 1872, 1894, 1898, 1898, 1882, 1880, 1878, 1894, 1872, 1872, 1898, 1880, - 1902, 1904, 1906, 1908, 1902, 1906, 1900, 1902, 1908, 1910, 1900, 1908, - 1912, 1914, 1904, 1902, 1912, 1904, 1916, 1912, 1902, 1900, 1916, 1902, - 1918, 1922, 1914, 1920, 1922, 1918, 1914, 1926, 1918, 1912, 1926, 1914, - 1916, 1926, 1912, 1924, 1926, 1916, 1924, 1918, 1926, 1934, 1936, 1938, - 1918, 1932, 1938, 1918, 1938, 1920, 1932, 1918, 1924, 1934, 1938, 1932, - 1930, 1932, 1924, 1928, 1930, 1924, 1940, 1946, 1948, 1950, 1940, 1948, - 1942, 1946, 1940, 1944, 1946, 1942, 1958, 1960, 1934, 1958, 1934, 1932, - 1930, 1952, 1958, 1956, 1958, 1952, 1954, 1956, 1952, 1946, 1928, 1948, - 1932, 1930, 1958, 1928, 1952, 1930, 1944, 1928, 1946, 1928, 1944, 1952, - 283, 1962, 1963, 283, 1963, 1965, 283, 1965, 1967, 285, 283, 1967, - 1973, 1979, 281, 1977, 1979, 1973, 1975, 1977, 1973, 289, 1973, 281, - 1971, 289, 1969, 1971, 1973, 289, 1981, 1640, 1980, 1630, 1640, 1981, - 1531, 1630, 1981, 1531, 1981, 1533, 1632, 1630, 1531, 1982, 1983, 1984, - 1982, 511, 509, 625, 1982, 1984, 625, 1984, 1986, 1982, 631, 511, - 625, 631, 1982, 1990, 1992, 1994, 1988, 491, 489, 1990, 1994, 491, - 1988, 1990, 491, 2008, 2010, 2012, 2008, 2012, 2014, 2004, 2006, 2008, - 2000, 2002, 2004, 2004, 2018, 1996, 2014, 2004, 2008, 2000, 2004, 1996, - 1998, 2000, 1996, 2014, 2016, 2018, 2018, 2004, 2014, 1996, 2018, 2020, - 2104, 2098, 2100, 2102, 2104, 2100, 2094, 2098, 2104, 2096, 2098, 2094, - 2094, 2104, 2106, 2106, 2092, 2094, 2092, 2106, 2107, 2084, 2080, 2082, - 2086, 2078, 2080, 2086, 2072, 2078, 2086, 2080, 2084, 2078, 2074, 2076, - 2088, 2072, 2086, 2072, 2074, 2078, 2108, 2092, 2107, 2058, 2062, 2066, - 2062, 2058, 2060, 2058, 2052, 2056, 2064, 2066, 2062, 2070, 2072, 2088, - 2070, 2088, 2090, 2066, 2048, 2050, 2052, 2054, 2056, 2066, 2052, 2058, - 2066, 2050, 2052, 2108, 2110, 2090, 2108, 2090, 2092, 2042, 2044, 2046, - 2040, 2036, 2038, 2042, 2034, 2036, 2112, 2068, 2070, 2110, 2112, 2070, - 2110, 2070, 2090, 2028, 2032, 2034, 2042, 2036, 2040, 2034, 2042, 2046, - 2026, 2028, 2034, 2030, 2032, 2028, 2046, 2026, 2034, 2026, 2046, 2114, - 2022, 2026, 2114, 2024, 2026, 2022, 2048, 2066, 2068, 2048, 2068, 2112, - 2112, 2046, 2048, 2112, 2114, 2046, 2116, 2022, 2114, 2120, 311, 317, - 2120, 317, 2118, 2125, 2120, 2118, 2127, 2120, 2125, 882, 982, 2130, - 878, 882, 880, 882, 984, 982, 878, 984, 882, 2132, 984, 878, - 874, 878, 876, 2132, 878, 874, 2136, 2133, 2135, 2137, 2133, 2136, - 515, 2133, 2137, 517, 515, 2137, 2145, 547, 545, 2139, 545, 543, - 2145, 545, 2139, 2143, 2141, 2142, 2145, 2139, 2141, 2143, 2145, 2141, - 1986, 2146, 2148, 1984, 2146, 1986, 641, 1986, 2148, 641, 2148, 643, - 621, 2151, 2145, 621, 2145, 2143, 615, 621, 2143, 2149, 615, 2143, - 2150, 615, 2149, 2162, 2164, 2160, 2162, 2160, 2161, 2163, 2157, 2164, - 2163, 2164, 2162, 2167, 2175, 2177, 2178, 2167, 2177, 2165, 2167, 2178, - 2165, 2178, 2179, 2169, 2175, 2167, 2169, 2173, 2175, 2171, 2173, 2169, - 2172, 2173, 2171, 2184, 2185, 2186, 2186, 2187, 2188, 1579, 1564, 2188, - 1579, 2188, 1581, 1564, 1579, 1566, 1562, 2188, 1564, 1562, 2182, 2184, - 2183, 2184, 2182, 2186, 2188, 1562, 1562, 2184, 2186, 2180, 2182, 1562, - 2181, 2182, 2180, 1561, 2180, 1562, 2191, 2192, 2194, 2191, 2194, 2189, - 2190, 2191, 2189, 2224, 2226, 2228, 2208, 2210, 2212, 2214, 2208, 2212, - 2232, 2228, 2230, 2206, 2207, 2208, 2220, 2222, 2232, 2228, 2222, 2224, - 2232, 2222, 2228, 2232, 2218, 2220, 2234, 2218, 2232, 2216, 2218, 2234, - 2214, 2216, 2234, 2234, 2206, 2214, 2214, 2206, 2208, 2206, 2234, 2236, - 2205, 2206, 2236, 2244, 2240, 2242, 2244, 2256, 2238, 2244, 2238, 2240, - 2246, 2256, 2244, 2248, 2256, 2246, 2254, 2256, 2248, 2250, 2254, 2248, - 2252, 2254, 2250, 2262, 2259, 2260, 2258, 2259, 2262, 2264, 2258, 2262, - 2281, 2267, 2279, 2266, 2267, 2281, 2268, 2269, 2271, 2267, 2268, 2271, - 2273, 2277, 2271, 2275, 2277, 2273, 2277, 2267, 2271, 2279, 2267, 2277, - 2287, 2289, 2291, 2307, 2283, 2285, 2307, 2285, 2287, 2305, 2307, 2287, - 2303, 2305, 2287, 2287, 2291, 2293, 2301, 2303, 2287, 2293, 2299, 2301, - 2287, 2293, 2301, 2295, 2299, 2293, 2299, 2295, 2297, 2322, 2324, 2326, - 2317, 2326, 2328, 2317, 2328, 2330, 2322, 2326, 2317, 2319, 2322, 2317, - 2330, 2309, 2317, 2320, 2322, 2319, 2321, 2322, 2320, 2332, 2309, 2330, - 2315, 2317, 2309, 2311, 2315, 2309, 2313, 2315, 2311, 2368, 2334, 2336, - 2364, 2366, 2336, 2342, 2338, 2340, 2342, 2344, 2338, 2344, 2346, 2338, - 2336, 2338, 2364, 2336, 2366, 2368, 2338, 2346, 2364, 2346, 2362, 2364, - 2348, 2362, 2346, 2360, 2362, 2348, 2350, 2358, 2360, 2348, 2350, 2360, - 2352, 2358, 2350, 2356, 2358, 2352, 2354, 2356, 2352, 2372, 2384, 2370, - 2374, 2376, 2372, 2376, 2378, 2372, 2378, 2380, 2372, 2380, 2382, 2372, - 2382, 2384, 2372, 2386, 2370, 2384, 2338, 2370, 2386, 2336, 2370, 2338 - ] - }, - { - "id": "shape1_part3", - "type": "TRIANGLES", - "indices": [ - 122, 123, 124, 123, 125, 124, 124, 125, 126, 125, 127, 126, - 126, 127, 128, 127, 129, 128, 128, 129, 130, 129, 131, 130, - 130, 131, 132, 131, 133, 132, 132, 133, 134, 133, 135, 134, - 134, 135, 136, 135, 137, 136, 136, 137, 138, 137, 139, 138, - 138, 139, 140, 139, 141, 140, 140, 141, 122, 141, 123, 122, - 122, 122, 124, 122, 124, 124, 124, 124, 126, 124, 126, 126, - 126, 126, 128, 126, 128, 128, 128, 128, 130, 128, 130, 130, - 130, 130, 132, 130, 132, 132, 132, 132, 134, 132, 134, 134, - 134, 134, 136, 134, 136, 136, 136, 136, 138, 136, 138, 138, - 138, 138, 140, 138, 140, 140, 140, 140, 122, 140, 122, 122, - 325, 319, 321, 323, 325, 321, 329, 331, 333, 329, 333, 335, - 337, 329, 335, 327, 329, 337, 343, 339, 340, 343, 340, 341, - 657, 658, 659, 658, 514, 659, 659, 514, 660, 514, 512, 660, - 660, 512, 661, 512, 632, 661, 661, 632, 662, 632, 630, 662, - 662, 630, 663, 630, 628, 663, 663, 628, 664, 628, 665, 664, - 664, 665, 666, 665, 667, 666, 666, 667, 657, 667, 658, 657, - 657, 657, 659, 657, 659, 659, 659, 659, 660, 659, 660, 660, - 660, 660, 661, 660, 661, 661, 661, 661, 662, 661, 662, 662, - 662, 662, 663, 662, 663, 663, 663, 663, 664, 663, 664, 664, - 664, 664, 666, 664, 666, 666, 666, 666, 657, 666, 657, 657, - 657, 659, 660, 661, 657, 660, 662, 657, 661, 666, 657, 662, - 664, 666, 662, 664, 662, 663, 1367, 1363, 1365, 1371, 1367, 1369, - 1367, 1361, 1363, 1371, 1361, 1367, 1357, 1359, 1361, 1371, 1357, 1361, - 1355, 1357, 1371, 1381, 1353, 1355, 1379, 1355, 1371, 1379, 1371, 1373, - 1381, 1355, 1379, 1377, 1379, 1373, 1375, 1377, 1373, 1389, 1385, 1387, - 1383, 1385, 1389, 1403, 1395, 1397, 1395, 1391, 1393, 1405, 1395, 1403, - 1405, 1391, 1395, 1403, 1397, 1399, 1401, 1403, 1399, 1413, 1407, 1409, - 1411, 1413, 1409, 1415, 1417, 1419, 1421, 1423, 1419, 1419, 1423, 1425, - 1427, 1439, 1425, 1439, 1419, 1425, 1415, 1419, 1439, 1441, 1447, 1415, - 1441, 1415, 1439, 1437, 1439, 1427, 1443, 1445, 1447, 1443, 1447, 1441, - 1431, 1427, 1429, 1433, 1437, 1427, 1431, 1433, 1427, 1435, 1437, 1433, - 1453, 1455, 1456, 1451, 1453, 1456, 1451, 1456, 1449, 1502, 1457, 1459, - 1500, 1459, 1461, 1459, 1500, 1502, 1498, 1461, 1463, 1498, 1500, 1461, - 1499, 1500, 1498, 1465, 1497, 1498, 1465, 1498, 1463, 1497, 1465, 1467, - 1471, 1497, 1467, 1471, 1467, 1469, 1495, 1497, 1471, 1473, 1492, 1495, - 1473, 1495, 1471, 1492, 1473, 1475, 1493, 1495, 1492, 1479, 1475, 1477, - 1481, 1492, 1475, 1481, 1475, 1479, 1481, 1483, 1492, 1489, 1483, 1485, - 1489, 1485, 1487, 1483, 1491, 1492, 1489, 1491, 1483, 1519, 1529, 1504, - 1520, 1529, 1519, 1527, 1529, 1520, 1525, 1527, 1520, 1520, 1522, 1525, - 1521, 1522, 1520, 1505, 1518, 1504, 1519, 1504, 1518, 1524, 1525, 1522, - 1524, 1522, 1523, 1516, 1518, 1505, 1517, 1518, 1516, 1516, 1505, 1506, - 1513, 1511, 1512, 1515, 1516, 1506, 1508, 1510, 1511, 1508, 1511, 1513, - 1514, 1508, 1513, 1507, 1508, 1514, 1507, 1514, 1515, 1507, 1515, 1506 - ] - }, - { - "id": "shape1_part4", - "type": "TRIANGLES", - "indices": [ - 128, 130, 132, 136, 128, 132, 136, 132, 134, 126, 128, 136, - 138, 140, 124, 126, 138, 124, 122, 124, 140, 136, 138, 126 - ] - }, - { - "id": "shape1_part5", - "type": "TRIANGLES", - "indices": [ - 319, 320, 321, 320, 322, 321, 321, 322, 323, 322, 324, 323, - 323, 324, 325, 324, 326, 325, 325, 326, 319, 326, 320, 319, - 319, 319, 321, 319, 321, 321, 321, 321, 323, 321, 323, 323, - 323, 323, 325, 323, 325, 325, 325, 325, 319, 325, 319, 319, - 324, 322, 320, 326, 324, 320, 327, 328, 329, 328, 330, 329, - 329, 330, 331, 330, 332, 331, 331, 332, 333, 332, 334, 333, - 333, 334, 335, 334, 336, 335, 335, 336, 337, 336, 338, 337, - 337, 338, 327, 338, 328, 327, 327, 327, 329, 327, 329, 329, - 329, 329, 331, 329, 331, 331, 331, 331, 333, 331, 333, 333, - 333, 333, 335, 333, 335, 335, 335, 335, 337, 335, 337, 337, - 337, 337, 327, 337, 327, 327, 339, 328, 340, 328, 338, 340, - 340, 338, 341, 338, 342, 341, 341, 342, 343, 342, 344, 343, - 343, 344, 339, 344, 328, 339, 339, 339, 340, 339, 340, 340, - 340, 340, 341, 340, 341, 341, 341, 341, 343, 341, 343, 343, - 343, 343, 339, 343, 339, 339, 1353, 1354, 1355, 1354, 1356, 1355, - 1355, 1356, 1357, 1356, 1358, 1357, 1357, 1358, 1359, 1358, 1360, 1359, - 1359, 1360, 1361, 1360, 1362, 1361, 1361, 1362, 1363, 1362, 1364, 1363, - 1363, 1364, 1365, 1364, 1366, 1365, 1365, 1366, 1367, 1366, 1368, 1367, - 1367, 1368, 1369, 1368, 1370, 1369, 1369, 1370, 1371, 1370, 1372, 1371, - 1371, 1372, 1373, 1372, 1374, 1373, 1373, 1374, 1375, 1374, 1376, 1375, - 1375, 1376, 1377, 1376, 1378, 1377, 1377, 1378, 1379, 1378, 1380, 1379, - 1379, 1380, 1381, 1380, 1382, 1381, 1381, 1382, 1353, 1382, 1354, 1353, - 1353, 1353, 1355, 1353, 1355, 1355, 1355, 1355, 1357, 1355, 1357, 1357, - 1357, 1357, 1359, 1357, 1359, 1359, 1359, 1359, 1361, 1359, 1361, 1361, - 1361, 1361, 1363, 1361, 1363, 1363, 1363, 1363, 1365, 1363, 1365, 1365, - 1365, 1365, 1367, 1365, 1367, 1367, 1367, 1367, 1369, 1367, 1369, 1369, - 1369, 1369, 1371, 1369, 1371, 1371, 1371, 1371, 1373, 1371, 1373, 1373, - 1373, 1373, 1375, 1373, 1375, 1375, 1375, 1375, 1377, 1375, 1377, 1377, - 1377, 1377, 1379, 1377, 1379, 1379, 1379, 1379, 1381, 1379, 1381, 1381, - 1381, 1381, 1353, 1381, 1353, 1353, 1383, 1384, 1385, 1384, 1386, 1385, - 1385, 1386, 1387, 1386, 1388, 1387, 1387, 1388, 1389, 1388, 1390, 1389, - 1389, 1390, 1383, 1390, 1384, 1383, 1383, 1383, 1385, 1383, 1385, 1385, - 1385, 1385, 1387, 1385, 1387, 1387, 1387, 1387, 1389, 1387, 1389, 1389, - 1389, 1389, 1383, 1389, 1383, 1383, 1391, 1392, 1393, 1392, 1394, 1393, - 1393, 1394, 1395, 1394, 1396, 1395, 1395, 1396, 1397, 1396, 1398, 1397, - 1397, 1398, 1399, 1398, 1400, 1399, 1399, 1400, 1401, 1400, 1402, 1401, - 1401, 1402, 1403, 1402, 1404, 1403, 1403, 1404, 1405, 1404, 1406, 1405, - 1405, 1406, 1391, 1406, 1392, 1391, 1391, 1391, 1393, 1391, 1393, 1393, - 1393, 1393, 1395, 1393, 1395, 1395, 1395, 1395, 1397, 1395, 1397, 1397, - 1397, 1397, 1399, 1397, 1399, 1399, 1399, 1399, 1401, 1399, 1401, 1401, - 1401, 1401, 1403, 1401, 1403, 1403, 1403, 1403, 1405, 1403, 1405, 1405, - 1405, 1405, 1391, 1405, 1391, 1391, 1407, 1408, 1409, 1408, 1410, 1409, - 1409, 1410, 1411, 1410, 1412, 1411, 1411, 1412, 1413, 1412, 1414, 1413, - 1413, 1414, 1407, 1414, 1408, 1407, 1407, 1407, 1409, 1407, 1409, 1409, - 1409, 1409, 1411, 1409, 1411, 1411, 1411, 1411, 1413, 1411, 1413, 1413, - 1413, 1413, 1407, 1413, 1407, 1407, 1415, 1416, 1417, 1416, 1418, 1417, - 1417, 1418, 1419, 1418, 1420, 1419, 1419, 1420, 1421, 1420, 1422, 1421, - 1421, 1422, 1423, 1422, 1424, 1423, 1423, 1424, 1425, 1424, 1426, 1425, - 1425, 1426, 1427, 1426, 1428, 1427, 1427, 1428, 1429, 1428, 1430, 1429, - 1429, 1430, 1431, 1430, 1432, 1431, 1431, 1432, 1433, 1432, 1434, 1433, - 1433, 1434, 1435, 1434, 1436, 1435, 1435, 1436, 1437, 1436, 1438, 1437, - 1437, 1438, 1439, 1438, 1440, 1439, 1439, 1440, 1441, 1440, 1442, 1441, - 1441, 1442, 1443, 1442, 1444, 1443, 1443, 1444, 1445, 1444, 1446, 1445, - 1445, 1446, 1447, 1446, 1448, 1447, 1447, 1448, 1415, 1448, 1416, 1415, - 1415, 1415, 1417, 1415, 1417, 1417, 1417, 1417, 1419, 1417, 1419, 1419, - 1419, 1419, 1421, 1419, 1421, 1421, 1421, 1421, 1423, 1421, 1423, 1423, - 1423, 1423, 1425, 1423, 1425, 1425, 1425, 1425, 1427, 1425, 1427, 1427, - 1427, 1427, 1429, 1427, 1429, 1429, 1429, 1429, 1431, 1429, 1431, 1431, - 1431, 1431, 1433, 1431, 1433, 1433, 1433, 1433, 1435, 1433, 1435, 1435, - 1435, 1435, 1437, 1435, 1437, 1437, 1437, 1437, 1439, 1437, 1439, 1439, - 1439, 1439, 1441, 1439, 1441, 1441, 1441, 1441, 1443, 1441, 1443, 1443, - 1443, 1443, 1445, 1443, 1445, 1445, 1445, 1445, 1447, 1445, 1447, 1447, - 1447, 1447, 1415, 1447, 1415, 1415, 1449, 1450, 1451, 1450, 1452, 1451, - 1451, 1452, 1453, 1452, 1454, 1453, 1453, 1454, 1455, 1454, 1367, 1455, - 1455, 1367, 1456, 1367, 1369, 1456, 1456, 1369, 1449, 1369, 1450, 1449, - 1449, 1449, 1451, 1449, 1451, 1451, 1451, 1451, 1453, 1451, 1453, 1453, - 1453, 1453, 1455, 1453, 1455, 1455, 1455, 1455, 1456, 1455, 1456, 1456, - 1456, 1456, 1449, 1456, 1449, 1449, 1450, 1369, 1367, 1450, 1367, 1454, - 1450, 1454, 1452, 1457, 1458, 1459, 1458, 1460, 1459, 1459, 1460, 1461, - 1460, 1462, 1461, 1461, 1462, 1463, 1462, 1464, 1463, 1463, 1464, 1465, - 1464, 1466, 1465, 1465, 1466, 1467, 1466, 1468, 1467, 1467, 1468, 1469, - 1468, 1470, 1469, 1469, 1470, 1471, 1470, 1472, 1471, 1471, 1472, 1473, - 1472, 1474, 1473, 1473, 1474, 1475, 1474, 1476, 1475, 1475, 1476, 1477, - 1476, 1478, 1477, 1477, 1478, 1479, 1478, 1480, 1479, 1479, 1480, 1481, - 1480, 1482, 1481, 1481, 1482, 1483, 1482, 1484, 1483, 1483, 1484, 1485, - 1484, 1486, 1485, 1485, 1486, 1487, 1486, 1488, 1487, 1487, 1488, 1489, - 1488, 1490, 1489, 1489, 1490, 1491, 1490, 1376, 1491, 1491, 1376, 1492, - 1376, 1374, 1492, 1492, 1374, 1493, 1374, 1494, 1493, 1493, 1494, 1495, - 1494, 1496, 1495, 1495, 1496, 1497, 1496, 1370, 1497, 1497, 1370, 1498, - 1370, 1368, 1498, 1498, 1368, 1499, 1368, 1366, 1499, 1499, 1366, 1500, - 1366, 1501, 1500, 1500, 1501, 1502, 1501, 1503, 1502, 1502, 1503, 1457, - 1503, 1458, 1457, 1457, 1457, 1459, 1457, 1459, 1459, 1459, 1459, 1461, - 1459, 1461, 1461, 1461, 1461, 1463, 1461, 1463, 1463, 1463, 1463, 1465, - 1463, 1465, 1465, 1465, 1465, 1467, 1465, 1467, 1467, 1467, 1467, 1469, - 1467, 1469, 1469, 1469, 1469, 1471, 1469, 1471, 1471, 1471, 1471, 1473, - 1471, 1473, 1473, 1473, 1473, 1475, 1473, 1475, 1475, 1475, 1475, 1477, - 1475, 1477, 1477, 1477, 1477, 1479, 1477, 1479, 1479, 1479, 1479, 1481, - 1479, 1481, 1481, 1481, 1481, 1483, 1481, 1483, 1483, 1483, 1483, 1485, - 1483, 1485, 1485, 1485, 1485, 1487, 1485, 1487, 1487, 1487, 1487, 1489, - 1487, 1489, 1489, 1489, 1489, 1491, 1489, 1491, 1491, 1491, 1491, 1492, - 1491, 1492, 1492, 1492, 1492, 1493, 1492, 1493, 1493, 1493, 1493, 1495, - 1493, 1495, 1495, 1495, 1495, 1497, 1495, 1497, 1497, 1497, 1497, 1498, - 1497, 1498, 1498, 1498, 1498, 1499, 1498, 1499, 1499, 1499, 1499, 1500, - 1499, 1500, 1500, 1500, 1500, 1502, 1500, 1502, 1502, 1502, 1502, 1457, - 1502, 1457, 1457, 1504, 1360, 1505, 1360, 1358, 1505, 1505, 1358, 1506, - 1358, 1356, 1506, 1506, 1356, 1507, 1356, 1354, 1507, 1507, 1354, 1508, - 1354, 1509, 1508, 1508, 1509, 1510, 1509, 1442, 1510, 1510, 1442, 1511, - 1442, 1440, 1511, 1511, 1440, 1512, 1440, 1438, 1512, 1512, 1438, 1513, - 1438, 1436, 1513, 1513, 1436, 1514, 1436, 1434, 1514, 1514, 1434, 1515, - 1434, 1432, 1515, 1515, 1432, 1516, 1432, 1430, 1516, 1516, 1430, 1517, - 1430, 1428, 1517, 1517, 1428, 1518, 1428, 1426, 1518, 1518, 1426, 1519, - 1426, 1424, 1519, 1519, 1424, 1520, 1424, 1422, 1520, 1520, 1422, 1521, - 1422, 1420, 1521, 1521, 1420, 1522, 1420, 1418, 1522, 1522, 1418, 1523, - 1418, 1416, 1523, 1523, 1416, 1524, 1416, 1448, 1524, 1524, 1448, 1525, - 1448, 1526, 1525, 1525, 1526, 1527, 1526, 1528, 1527, 1527, 1528, 1529, - 1528, 1530, 1529, 1529, 1530, 1504, 1530, 1360, 1504, 1504, 1504, 1505, - 1504, 1505, 1505, 1505, 1505, 1506, 1505, 1506, 1506, 1506, 1506, 1507, - 1506, 1507, 1507, 1507, 1507, 1508, 1507, 1508, 1508, 1508, 1508, 1510, - 1508, 1510, 1510, 1510, 1510, 1511, 1510, 1511, 1511, 1511, 1511, 1512, - 1511, 1512, 1512, 1512, 1512, 1513, 1512, 1513, 1513, 1513, 1513, 1514, - 1513, 1514, 1514, 1514, 1514, 1515, 1514, 1515, 1515, 1515, 1515, 1516, - 1515, 1516, 1516, 1516, 1516, 1517, 1516, 1517, 1517, 1517, 1517, 1518, - 1517, 1518, 1518, 1518, 1518, 1519, 1518, 1519, 1519, 1519, 1519, 1520, - 1519, 1520, 1520, 1520, 1520, 1521, 1520, 1521, 1521, 1521, 1521, 1522, - 1521, 1522, 1522, 1522, 1522, 1523, 1522, 1523, 1523, 1523, 1523, 1524, - 1523, 1524, 1524, 1524, 1524, 1525, 1524, 1525, 1525, 1525, 1525, 1527, - 1525, 1527, 1527, 1527, 1527, 1529, 1527, 1529, 1529, 1529, 1529, 1504, - 1529, 1504, 1504 - ] - }, - { - "id": "shape1_part6", - "type": "TRIANGLES", - "indices": [ - 2195, 2196, 2197, 2196, 2198, 2197, 2197, 2198, 2199, 2198, 2200, 2199, - 2199, 2200, 2201, 2200, 2202, 2201, 2201, 2202, 1591, 2202, 1592, 1591, - 1591, 1592, 1589, 1592, 1590, 1589, 1589, 1590, 1587, 1590, 1588, 1587, - 1587, 1588, 1585, 1588, 1586, 1585, 1585, 1586, 2203, 1586, 2204, 2203, - 2203, 2204, 2195, 2204, 2196, 2195, 2195, 2195, 2197, 2195, 2197, 2197, - 2197, 2197, 2199, 2197, 2199, 2199, 2199, 2199, 2201, 2199, 2201, 2201, - 2201, 2201, 1591, 2201, 1591, 1591, 1591, 1591, 1589, 1591, 1589, 1589, - 1589, 1589, 1587, 1589, 1587, 1587, 1587, 1587, 1585, 1587, 1585, 1585, - 1585, 1585, 2203, 1585, 2203, 2203, 2203, 2203, 2195, 2203, 2195, 2195 - ] - }, - { - "id": "shape1_part7", - "type": "TRIANGLES", - "indices": [ - 1585, 2203, 2195, 1587, 1585, 2195, 1589, 1587, 2195, 2201, 1589, 2195, - 2197, 2201, 2195, 2199, 2201, 2197, 1591, 1589, 2201 - ] - }, - { - "id": "shape1_part8", - "type": "TRIANGLES", - "indices": [ - 2388, 2389, 2390, 2389, 2391, 2390, 2390, 2391, 2392, 2391, 2393, 2392, - 2392, 2393, 2394, 2393, 2395, 2394, 2394, 2395, 2396, 2395, 2397, 2396, - 2396, 2397, 2398, 2397, 2399, 2398, 2398, 2399, 2400, 2399, 2401, 2400, - 2400, 2401, 2388, 2401, 2389, 2388, 2402, 2388, 2403, 2388, 2390, 2403, - 2403, 2390, 2404, 2390, 2392, 2404, 2404, 2392, 2394, 2392, 2394, 2394, - 2394, 2394, 2405, 2394, 2396, 2405, 2405, 2396, 2406, 2396, 2398, 2406, - 2406, 2398, 2407, 2398, 2400, 2407, 2407, 2400, 2402, 2400, 2388, 2402, - 2395, 2393, 2389, 2399, 2395, 2389, 2401, 2399, 2389, 2408, 2409, 2394, - 2409, 2395, 2394, 2394, 2395, 2392, 2395, 2393, 2392, 2392, 2393, 2388, - 2393, 2389, 2388, 2388, 2389, 2400, 2389, 2401, 2400, 2400, 2401, 2410, - 2401, 2411, 2410, 2410, 2411, 2412, 2411, 2413, 2412, 2412, 2413, 2414, - 2413, 2415, 2414, 2414, 2415, 2416, 2415, 2417, 2416, 2416, 2417, 2418, - 2417, 2419, 2418, 2418, 2419, 2420, 2419, 2421, 2420, 2420, 2421, 2422, - 2421, 2423, 2422, 2422, 2423, 2424, 2423, 2425, 2424, 2424, 2425, 2426, - 2425, 2427, 2426, 2426, 2427, 2428, 2427, 2429, 2428, 2428, 2429, 2430, - 2429, 2431, 2430, 2430, 2431, 2432, 2431, 2433, 2432, 2432, 2433, 2434, - 2433, 2435, 2434, 2434, 2435, 2436, 2435, 2437, 2436, 2436, 2437, 2438, - 2437, 2439, 2438, 2438, 2439, 2440, 2439, 2441, 2440, 2440, 2441, 2442, - 2441, 2443, 2442, 2442, 2443, 2444, 2443, 2445, 2444, 2444, 2445, 2446, - 2445, 2447, 2446, 2446, 2447, 2448, 2447, 2449, 2448, 2448, 2449, 2450, - 2449, 2451, 2450, 2450, 2451, 2452, 2451, 2453, 2452, 2452, 2453, 2454, - 2453, 2455, 2454, 2454, 2455, 2456, 2455, 2457, 2456, 2456, 2457, 2458, - 2457, 2459, 2458, 2458, 2459, 2460, 2459, 2461, 2460, 2460, 2461, 2462, - 2461, 2463, 2462, 2462, 2463, 2464, 2463, 2465, 2464, 2464, 2465, 2466, - 2465, 2467, 2466, 2466, 2467, 2468, 2467, 2469, 2468, 2468, 2469, 2470, - 2469, 2471, 2470, 2470, 2471, 2472, 2471, 2473, 2472, 2472, 2473, 2474, - 2473, 2475, 2474, 2474, 2475, 2476, 2475, 2477, 2476, 2476, 2477, 2478, - 2477, 2479, 2478, 2478, 2479, 2480, 2479, 2481, 2480, 2480, 2481, 2482, - 2481, 2483, 2482, 2482, 2483, 2484, 2483, 2485, 2484, 2484, 2485, 2486, - 2485, 2487, 2486, 2486, 2487, 2488, 2487, 2489, 2488, 2488, 2489, 2490, - 2489, 2491, 2490, 2490, 2491, 2492, 2491, 2493, 2492, 2492, 2493, 2494, - 2493, 2495, 2494, 2494, 2495, 2496, 2495, 2497, 2496, 2496, 2497, 2498, - 2497, 2499, 2498, 2498, 2499, 2500, 2499, 2501, 2500, 2500, 2501, 2408, - 2501, 2409, 2408, 2408, 2408, 2394, 2408, 2394, 2394, 2394, 2394, 2392, - 2394, 2392, 2392, 2392, 2392, 2388, 2392, 2388, 2388, 2388, 2388, 2400, - 2388, 2400, 2400, 2400, 2400, 2410, 2400, 2410, 2410, 2410, 2410, 2412, - 2410, 2412, 2412, 2412, 2412, 2414, 2412, 2414, 2414, 2414, 2414, 2416, - 2414, 2416, 2416, 2416, 2416, 2418, 2416, 2418, 2418, 2418, 2418, 2420, - 2418, 2420, 2420, 2420, 2420, 2422, 2420, 2422, 2422, 2422, 2422, 2424, - 2422, 2424, 2424, 2424, 2424, 2426, 2424, 2426, 2426, 2426, 2426, 2428, - 2426, 2428, 2428, 2428, 2428, 2430, 2428, 2430, 2430, 2430, 2430, 2432, - 2430, 2432, 2432, 2432, 2432, 2434, 2432, 2434, 2434, 2434, 2434, 2436, - 2434, 2436, 2436, 2436, 2436, 2438, 2436, 2438, 2438, 2438, 2438, 2440, - 2438, 2440, 2440, 2440, 2440, 2442, 2440, 2442, 2442, 2442, 2442, 2444, - 2442, 2444, 2444, 2444, 2444, 2446, 2444, 2446, 2446, 2446, 2446, 2448, - 2446, 2448, 2448, 2448, 2448, 2450, 2448, 2450, 2450, 2450, 2450, 2452, - 2450, 2452, 2452, 2452, 2452, 2454, 2452, 2454, 2454, 2454, 2454, 2456, - 2454, 2456, 2456, 2456, 2456, 2458, 2456, 2458, 2458, 2458, 2458, 2460, - 2458, 2460, 2460, 2460, 2460, 2462, 2460, 2462, 2462, 2462, 2462, 2464, - 2462, 2464, 2464, 2464, 2464, 2466, 2464, 2466, 2466, 2466, 2466, 2468, - 2466, 2468, 2468, 2468, 2468, 2470, 2468, 2470, 2470, 2470, 2470, 2472, - 2470, 2472, 2472, 2472, 2472, 2474, 2472, 2474, 2474, 2474, 2474, 2476, - 2474, 2476, 2476, 2476, 2476, 2478, 2476, 2478, 2478, 2478, 2478, 2480, - 2478, 2480, 2480, 2480, 2480, 2482, 2480, 2482, 2482, 2482, 2482, 2484, - 2482, 2484, 2484, 2484, 2484, 2486, 2484, 2486, 2486, 2486, 2486, 2488, - 2486, 2488, 2488, 2488, 2488, 2490, 2488, 2490, 2490, 2490, 2490, 2492, - 2490, 2492, 2492, 2492, 2492, 2494, 2492, 2494, 2494, 2494, 2494, 2496, - 2494, 2496, 2496, 2496, 2496, 2498, 2496, 2498, 2498, 2498, 2498, 2500, - 2498, 2500, 2500, 2500, 2500, 2408, 2500, 2408, 2408, 2501, 2499, 2497, - 2497, 2495, 2493, 2493, 2491, 2489, 2489, 2487, 2485, 2485, 2483, 2481, - 2485, 2481, 2479, 2479, 2477, 2475, 2475, 2473, 2471, 2475, 2471, 2469, - 2479, 2475, 2469, 2485, 2479, 2469, 2489, 2485, 2469, 2467, 2465, 2463, - 2463, 2461, 2459, 2467, 2463, 2459, 2459, 2457, 2455, 2467, 2459, 2455, - 2467, 2455, 2453, 2467, 2453, 2451, 2467, 2451, 2449, 2469, 2467, 2449, - 2489, 2469, 2449, 2493, 2489, 2449, 2497, 2493, 2449, 2501, 2497, 2449, - 2409, 2501, 2449, 2449, 2447, 2445, 2449, 2445, 2443, 2449, 2443, 2441, - 2449, 2441, 2439, 2449, 2439, 2437, 2449, 2437, 2435, 2435, 2433, 2431, - 2449, 2435, 2431, 2449, 2431, 2429, 2449, 2429, 2427, 2449, 2427, 2425, - 2423, 2421, 2419, 2425, 2423, 2419, 2425, 2419, 2417, 2425, 2417, 2415, - 2425, 2415, 2413, 2425, 2413, 2411, 2425, 2411, 2401, 2425, 2401, 2389, - 2449, 2425, 2389, 2449, 2389, 2393, 2409, 2449, 2393, 2409, 2393, 2395 - ] - }, - { - "id": "shape1_part9", - "type": "TRIANGLES", - "indices": [ - 2406, 2407, 2402, 2403, 2406, 2402, 2405, 2406, 2403, 2405, 2403, 2404, - 2394, 2405, 2404, 2448, 2442, 2444, 2448, 2444, 2446, 2448, 2440, 2442, - 2448, 2468, 2440, 2466, 2468, 2448, 2466, 2448, 2450, 2470, 2440, 2468, - 2472, 2440, 2470, 2474, 2438, 2440, 2472, 2474, 2440, 2464, 2466, 2450, - 2476, 2438, 2474, 2478, 2436, 2438, 2476, 2478, 2438, 2458, 2462, 2450, - 2464, 2450, 2462, 2480, 2436, 2478, 2450, 2452, 2458, 2460, 2462, 2458, - 2482, 2436, 2480, 2454, 2458, 2452, 2484, 2436, 2482, 2434, 2436, 2484, - 2430, 2432, 2434, 2486, 2434, 2484, 2456, 2458, 2454, 2488, 2434, 2486, - 2388, 2428, 2430, 2490, 2434, 2488, 2492, 2430, 2434, 2490, 2492, 2434, - 2392, 2388, 2430, 2492, 2392, 2430, 2494, 2392, 2492, 2496, 2392, 2494, - 2388, 2426, 2428, 2424, 2426, 2388, 2424, 2388, 2422, 2422, 2388, 2420, - 2400, 2410, 2412, 2400, 2412, 2414, 2400, 2414, 2416, 2498, 2394, 2392, - 2400, 2416, 2418, 2400, 2418, 2388, 2388, 2418, 2420, 2498, 2392, 2496, - 2500, 2394, 2498, 2408, 2394, 2500 - ] - }, - { - "id": "shape2_part1", - "type": "TRIANGLES", - "indices": [ - 2502, 2503, 2504, 2503, 2505, 2504, 2504, 2505, 2506, 2505, 2507, 2506, - 2506, 2507, 2508, 2507, 2509, 2508, 2507, 2505, 2509, 2505, 2503, 2509, - 2509, 2503, 2508, 2503, 2502, 2508, 2508, 2502, 2506, 2502, 2504, 2506, - 2510, 2511, 2512, 2511, 2513, 2512, 2512, 2513, 2514, 2513, 2515, 2514, - 2514, 2515, 2516, 2515, 2517, 2516, 2515, 2513, 2517, 2513, 2511, 2517, - 2517, 2511, 2516, 2511, 2510, 2516, 2516, 2510, 2514, 2510, 2512, 2514, - 2518, 2519, 2520, 2519, 2521, 2520, 2520, 2521, 2522, 2521, 2523, 2522, - 2522, 2523, 2524, 2523, 2525, 2524, 2523, 2521, 2525, 2521, 2519, 2525, - 2525, 2519, 2524, 2519, 2518, 2524, 2524, 2518, 2522, 2518, 2520, 2522, - 2526, 2527, 2528, 2527, 2529, 2528, 2528, 2529, 2530, 2529, 2531, 2530, - 2530, 2531, 2532, 2531, 2533, 2532, 2531, 2529, 2533, 2529, 2527, 2533, - 2533, 2527, 2532, 2527, 2526, 2532, 2532, 2526, 2530, 2526, 2528, 2530, - 2534, 2535, 2536, 2535, 2537, 2536, 2536, 2537, 2538, 2537, 2539, 2538, - 2538, 2539, 2540, 2539, 2541, 2540, 2539, 2537, 2541, 2537, 2535, 2541, - 2541, 2535, 2540, 2535, 2534, 2540, 2540, 2534, 2538, 2534, 2536, 2538, - 2542, 2543, 2544, 2543, 2545, 2544, 2544, 2545, 2546, 2545, 2547, 2546, - 2546, 2547, 2548, 2547, 2549, 2548, 2547, 2545, 2549, 2545, 2543, 2549, - 2549, 2543, 2548, 2543, 2542, 2548, 2548, 2542, 2546, 2542, 2544, 2546, - 2550, 2551, 2552, 2551, 2553, 2552, 2552, 2553, 2554, 2553, 2555, 2554, - 2554, 2555, 2556, 2555, 2557, 2556, 2555, 2553, 2557, 2553, 2551, 2557, - 2557, 2551, 2556, 2551, 2550, 2556, 2556, 2550, 2554, 2550, 2552, 2554, - 2558, 2559, 2560, 2559, 2561, 2560, 2560, 2561, 2562, 2561, 2563, 2562, - 2562, 2563, 2564, 2563, 2565, 2564, 2563, 2561, 2565, 2561, 2559, 2565, - 2565, 2559, 2564, 2559, 2558, 2564, 2564, 2558, 2562, 2558, 2560, 2562, - 2566, 2567, 2568, 2567, 2569, 2568, 2568, 2569, 2570, 2569, 2571, 2570, - 2570, 2571, 2572, 2571, 2573, 2572, 2571, 2569, 2573, 2569, 2567, 2573, - 2573, 2567, 2572, 2567, 2566, 2572, 2572, 2566, 2570, 2566, 2568, 2570, - 2574, 2575, 2576, 2575, 2577, 2576, 2576, 2577, 2578, 2577, 2579, 2578, - 2578, 2579, 2580, 2579, 2581, 2580, 2579, 2577, 2581, 2577, 2575, 2581, - 2581, 2575, 2580, 2575, 2574, 2580, 2580, 2574, 2578, 2574, 2576, 2578, - 2582, 2583, 2584, 2583, 2585, 2584, 2584, 2585, 2586, 2585, 2587, 2586, - 2586, 2587, 2588, 2587, 2589, 2588, 2587, 2585, 2589, 2585, 2583, 2589, - 2589, 2583, 2588, 2583, 2582, 2588, 2588, 2582, 2586, 2582, 2584, 2586, - 2590, 2591, 2592, 2591, 2593, 2592, 2592, 2593, 2594, 2593, 2595, 2594, - 2594, 2595, 2596, 2595, 2597, 2596, 2595, 2593, 2597, 2593, 2591, 2597, - 2597, 2591, 2596, 2591, 2590, 2596, 2596, 2590, 2594, 2590, 2592, 2594 - ] - } - ] - } - ], - "materials": [ - { - "id": "ENTRANCE_DEFAULT_0", - "ambient": [ 0.101961, 0.000000, 0.000000], - "diffuse": [ 0.101961, 0.000000, 0.000000], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "BUILDING_DEFAULT_0", - "ambient": [ 0.501961, 0.450980, 0.274510], - "diffuse": [ 0.501961, 0.450980, 0.274510], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "ROOF_DEFAULT_0", - "ambient": [ 0.400000, 0.000000, 0.000000], - "diffuse": [ 0.400000, 0.000000, 0.000000], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_0_0", - "ambient": [ 0.196078, 0.196078, 0.196078], - "diffuse": [ 0.196078, 0.196078, 0.196078], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_1_0", - "ambient": [ 0.235294, 0.215686, 0.215686], - "diffuse": [ 0.235294, 0.215686, 0.215686], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_2_0", - "ambient": [ 0.470588, 0.470588, 0.470588], - "diffuse": [ 0.470588, 0.470588, 0.470588], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_3_0", - "ambient": [ 0.333333, 0.254902, 0.156863], - "diffuse": [ 0.333333, 0.254902, 0.156863], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "MAT_4_0", - "ambient": [ 0.149020, 0.149020, 0.149020], - "diffuse": [ 0.149020, 0.149020, 0.149020], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "GLASS_0", - "ambient": [ 0.450980, 0.450980, 0.450980], - "diffuse": [ 0.450980, 0.450980, 0.450980], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - }, - { - "id": "GLASS_ROOF_0", - "ambient": [ 0.450980, 0.450980, 0.450980], - "diffuse": [ 0.450980, 0.450980, 0.450980], - "specular": [ 0.200000, 0.200000, 0.200000], - "shininess": 20.000000 - } - ], - "nodes": [ - { - "id": "test_root", - "children": [ - { - "id": "Building", - "parts": [ - { - "meshpartid": "shape1_part1", - "materialid": "BUILDING_DEFAULT_0" - }, - { - "meshpartid": "shape1_part2", - "materialid": "ROOF_DEFAULT_0" - }, - { - "meshpartid": "shape1_part3", - "materialid": "MAT_0_0" - }, - { - "meshpartid": "shape1_part4", - "materialid": "MAT_1_0" - }, - { - "meshpartid": "shape1_part5", - "materialid": "MAT_2_0" - }, - { - "meshpartid": "shape1_part6", - "materialid": "MAT_3_0" - }, - { - "meshpartid": "shape1_part7", - "materialid": "MAT_4_0" - }, - { - "meshpartid": "shape1_part8", - "materialid": "GLASS_0" - }, - { - "meshpartid": "shape1_part9", - "materialid": "GLASS_ROOF_0" - } - ] - }, - { - "id": "BuildingEntrance", - "parts": [ - { - "meshpartid": "shape2_part1", - "materialid": "ENTRANCE_DEFAULT_0" - } - ] - } - ] - } - ], - "animations": [] +{ + "version": [ 0, 1], + "id": "", + "meshes": [ + { + "attributes": ["POSITION"], + "vertices": [ + -44.509998, 15.000000, -48.078999, + -44.509998, 0.000000, -48.078999, + -43.915001, 15.000000, -52.787998, + -43.915001, 0.000000, -52.787998, + -41.426998, 15.000000, -54.946999, + -41.426998, 0.000000, -54.946999, + -39.555000, 15.000000, -52.331001, + -39.555000, 0.000000, -52.331001, + -27.945999, 15.000000, -62.484001, + -27.945999, 0.000000, -62.484001, + -27.465000, 15.000000, -65.924004, + -27.465000, 0.000000, -65.924004, + -25.465000, 15.000000, -67.649002, + -25.465000, 0.000000, -67.649002, + -35.355000, 15.000000, -80.039001, + -35.355000, 0.000000, -80.039001, + -38.505001, 15.000000, -80.440002, + -38.505001, 0.000000, -80.440002, + -74.762001, 15.000000, -84.570000, + -74.762001, 0.000000, -84.570000, + -75.042999, 15.000000, -82.355003, + -75.042999, 0.000000, -82.355003, + -139.567001, 15.000000, -81.752998, + -139.567001, 0.000000, -81.752998, + -144.876007, 15.000000, -67.615997, + -144.876007, 0.000000, -67.615997, + -150.720993, 15.000000, -56.105000, + -150.720993, 0.000000, -56.105000, + -156.759003, 15.000000, -44.205002, + -156.759003, 0.000000, -44.205002, + -158.550995, 15.000000, -46.576000, + -158.550995, 0.000000, -46.576000, + -160.832001, 15.000000, -41.756001, + -160.832001, 0.000000, -41.756001, + -179.602005, 15.000000, -2.182000, + -179.602005, 0.000000, -2.182000, + -152.699997, 15.000000, 8.160000, + -152.699997, 0.000000, 8.160000, + -150.587006, 15.000000, 2.984000, + -150.587006, 0.000000, 2.984000, + -148.065994, 15.000000, 3.930000, + -148.065994, 0.000000, 3.930000, + -150.292999, 15.000000, 9.084000, + -150.292999, 0.000000, 9.084000, + -144.227997, 15.000000, 11.388000, + -144.227997, 0.000000, 11.388000, + -137.654007, 15.000000, 13.893000, + -137.654007, 0.000000, 13.893000, + -137.279999, 15.000000, 13.013000, + -137.279999, 0.000000, 13.013000, + -136.136002, 15.000000, 14.238000, + -136.136002, 0.000000, 14.238000, + -134.585007, 15.000000, 15.095000, + -134.585007, 0.000000, 15.095000, + -132.806000, 15.000000, 15.496000, + -132.806000, 0.000000, 15.496000, + -130.725998, 15.000000, 15.507000, + -130.725998, 0.000000, 15.507000, + -129.362000, 15.000000, 15.173000, + -129.362000, 0.000000, 15.173000, + -127.764000, 15.000000, 14.483000, + -127.764000, 0.000000, 14.483000, + -126.607002, 15.000000, 13.693000, + -126.607002, 0.000000, 13.693000, + -125.651001, 15.000000, 12.590000, + -125.651001, 0.000000, 12.590000, + -125.102997, 15.000000, 11.399000, + -125.102997, 0.000000, 11.399000, + -124.420998, 15.000000, 12.023000, + -124.420998, 0.000000, 12.023000, + -90.463997, 15.000000, -14.816000, + -90.463997, 0.000000, -14.816000, + -90.189003, 15.000000, -14.416000, + -90.189003, 0.000000, -14.416000, + -82.660004, 15.000000, -20.271000, + -82.660004, 0.000000, -20.271000, + -84.825996, 15.000000, -22.931999, + -84.825996, 0.000000, -22.931999, + -79.911003, 15.000000, -26.705000, + -79.911003, 0.000000, -26.705000, + -75.846001, 15.000000, -26.049000, + -75.846001, 0.000000, -26.049000, + -74.348000, 15.000000, -23.677000, + -74.348000, 0.000000, -23.677000, + -62.124001, 15.000000, -33.741001, + -62.124001, 0.000000, -33.741001, + -61.467999, 15.000000, -38.426998, + -61.467999, 0.000000, -38.426998, + -59.061001, 15.000000, -40.554001, + -59.061001, 0.000000, -40.554001, + -57.127998, 15.000000, -37.915001, + -57.127998, 0.000000, -37.915001, + -158.798996, 27.000000, 128.639008, + -158.798996, 0.000000, 128.639008, + -158.457993, 27.000000, 128.115997, + -158.457993, 0.000000, 128.115997, + -175.410004, 27.000000, 116.528000, + -175.410004, 0.000000, 116.528000, + -188.804001, 27.000000, 136.298004, + -188.804001, 0.000000, 136.298004, + -172.761002, 27.000000, 147.139999, + -172.761002, 0.000000, 147.139999, + -167.011002, 27.000000, 139.380997, + -167.011002, 0.000000, 139.380997, + -170.013000, 27.000000, 137.367004, + -170.013000, 0.000000, 137.367004, + -167.345001, 27.000000, 133.192001, + -167.345001, 0.000000, 133.192001, + -164.195007, 27.000000, 135.417999, + -164.195007, 0.000000, 135.417999, + -108.244003, 10.000000, 115.526001, + -108.244003, 0.000000, 115.526001, + -119.900002, 10.000000, 132.623993, + -119.900002, 0.000000, 132.623993, + -124.133003, 10.000000, 138.925003, + -124.133003, 0.000000, 138.925003, + -107.628998, 10.000000, 150.001007, + -107.628998, 0.000000, 150.001007, + -93.559998, 10.000000, 159.440002, + -93.559998, 0.000000, 159.440002, + -82.981003, 10.000000, 139.481995, + -82.981003, 0.000000, 139.481995, + 27.530001, 20.000000, 83.933998, + 27.530001, 0.000000, 83.933998, + 38.791000, 20.000000, 91.336998, + 38.791000, 0.000000, 91.336998, + 49.911999, 20.000000, 99.563004, + 49.911999, 0.000000, 99.563004, + 63.660000, 20.000000, 111.796997, + 63.660000, 0.000000, 111.796997, + 74.139000, 20.000000, 121.860001, + 74.139000, 0.000000, 121.860001, + 102.873001, 20.000000, 91.805000, + 102.873001, 0.000000, 91.805000, + 105.086998, 20.000000, 81.485001, + 105.086998, 0.000000, 81.485001, + 89.098000, 20.000000, 65.856003, + 89.098000, 0.000000, 65.856003, + 55.255001, 20.000000, 49.091999, + 55.255001, 0.000000, 49.091999, + 47.458000, 20.000000, 50.283001, + 47.458000, 0.000000, 50.283001, + -15.889000, 29.500000, -22.754000, + -15.889000, 0.000000, -22.754000, + -7.784000, 29.500000, -18.846001, + -7.784000, 0.000000, -18.846001, + 0.635000, 29.500000, -20.983999, + 0.635000, 0.000000, -20.983999, + 5.837000, 29.500000, -28.063000, + 5.837000, 0.000000, -28.063000, + 5.202000, 29.500000, -37.103001, + 5.202000, 0.000000, -37.103001, + -0.977000, 29.500000, -43.391998, + -0.977000, 0.000000, -43.391998, + -9.871000, 29.500000, -44.237999, + -9.871000, 0.000000, -44.237999, + -16.959000, 29.500000, -39.439999, + -16.959000, 0.000000, -39.439999, + -19.433001, 29.500000, -30.346001, + -19.433001, 0.000000, -30.346001, + 1.350000, 24.500000, -5.187000, + 1.350000, 0.000000, -5.187000, + 26.280001, 24.500000, 4.119000, + 26.280001, 0.000000, 4.119000, + 26.500000, 24.500000, 3.652000, + 26.500000, 0.000000, 3.652000, + 41.431999, 24.500000, -26.459999, + 41.431999, 0.000000, -26.459999, + 51.991001, 24.500000, -51.662998, + 51.991001, 0.000000, -51.662998, + 21.504999, 24.500000, -63.831001, + 21.504999, 0.000000, -63.831001, + -3.404000, 24.500000, -49.848999, + -3.404000, 0.000000, -49.848999, + -9.750000, 24.500000, -44.883999, + -9.750000, 0.000000, -44.883999, + -10.747000, 24.500000, -46.174999, + -10.747000, 0.000000, -46.174999, + -12.693000, 24.500000, -48.702000, + -12.693000, 0.000000, -48.702000, + -27.157000, 24.500000, -37.470001, + -27.157000, 0.000000, -37.470001, + -25.111000, 24.500000, -34.854000, + -25.111000, 0.000000, -34.854000, + -24.141001, 24.500000, -33.606998, + -24.141001, 0.000000, -33.606998, + -55.362999, 24.500000, -9.161000, + -55.362999, 0.000000, -9.161000, + -50.681999, 24.500000, -3.017000, + -50.681999, 0.000000, -3.017000, + -21.212000, 24.500000, 10.876000, + -21.212000, 0.000000, 10.876000, + -9.824000, 24.500000, 1.425000, + -9.824000, 0.000000, 1.425000, + -10.954000, 24.500000, -2.716000, + -10.954000, 0.000000, -2.716000, + -7.691000, 24.500000, -4.753000, + -7.691000, 0.000000, -4.753000, + -4.815000, 24.500000, -7.280000, + -4.815000, 0.000000, -7.280000, + -15.889000, 24.500000, -22.754000, + -19.433001, 24.500000, -30.346001, + -16.959000, 24.500000, -39.439999, + -9.871000, 24.500000, -44.237999, + -0.977000, 24.500000, -43.391998, + 5.202000, 24.500000, -37.103001, + 5.837000, 24.500000, -28.063000, + 0.635000, 24.500000, -20.983999, + -7.784000, 24.500000, -18.846001, + 159.667007, 10.000000, -8.349000, + 159.667007, 0.000000, -8.349000, + 164.889008, 10.000000, -15.674000, + 164.889008, 0.000000, -15.674000, + 165.330994, 10.000000, -16.275000, + 165.330994, 0.000000, -16.275000, + 164.307999, 10.000000, -16.976000, + 164.307999, 0.000000, -16.976000, + 165.604996, 10.000000, -18.934999, + 165.604996, 0.000000, -18.934999, + 166.701996, 10.000000, -18.267000, + 166.701996, 0.000000, -18.267000, + 170.921005, 10.000000, -24.212000, + 170.921005, 0.000000, -24.212000, + 168.641006, 10.000000, -24.802000, + 168.641006, 0.000000, -24.802000, + 166.005997, 10.000000, -25.481001, + 166.005997, 0.000000, -25.481001, + 155.675003, 10.000000, -11.699000, + 155.675003, 0.000000, -11.699000, + 157.681000, 10.000000, -10.019000, + 157.681000, 0.000000, -10.019000, + -162.149002, 15.000000, -42.457001, + -162.149002, 0.000000, -42.457001, + -152.927994, 15.000000, -57.273998, + -152.927994, 0.000000, -57.273998, + -155.468994, 15.000000, -58.620998, + -155.468994, 0.000000, -58.620998, + -146.869003, 15.000000, -74.405998, + -146.869003, 0.000000, -74.405998, + -151.496994, 15.000000, -76.944000, + -151.496994, 0.000000, -76.944000, + -155.194000, 15.000000, -78.982002, + -155.194000, 0.000000, -78.982002, + -170.087006, 15.000000, -73.626999, + -170.087006, 0.000000, -73.626999, + -184.764999, 15.000000, -66.792000, + -184.764999, 0.000000, -66.792000, + -187.132004, 15.000000, -65.690002, + -187.132004, 0.000000, -65.690002, + -199.376007, 15.000000, -58.499001, + -199.376007, 0.000000, -58.499001, + -187.626999, 15.000000, -48.324001, + -187.626999, 0.000000, -48.324001, + -167.231003, 15.000000, -36.847000, + -167.231003, 0.000000, -36.847000, + -163.848007, 15.000000, -43.415001, + -163.848007, 0.000000, -43.415001, + -69.639999, 7.500000, -94.532997, + -69.639999, 0.000000, -94.532997, + -61.054001, 7.500000, -93.910004, + -61.054001, 0.000000, -93.910004, + -60.036999, 7.500000, -104.318001, + -60.036999, 0.000000, -104.318001, + -69.057999, 7.500000, -104.852997, + -69.057999, 0.000000, -104.852997, + -71.170998, 7.500000, -104.974998, + -71.170998, 0.000000, -104.974998, + -93.044998, 7.500000, -106.266998, + -93.044998, 0.000000, -106.266998, + -94.676003, 7.500000, -106.366997, + -94.676003, 0.000000, -106.366997, + -94.556000, 7.500000, -96.314003, + -94.556000, 0.000000, -96.314003, + -152.199005, 10.000000, -187.910995, + -152.199005, 0.000000, -187.910995, + -157.160004, 10.000000, -181.520996, + -157.160004, 0.000000, -181.520996, + -142.154999, 10.000000, -169.865005, + -142.154999, 0.000000, -169.865005, + -137.192993, 10.000000, -176.266006, + -137.192993, 0.000000, -176.266006, + -185.574005, 5.000000, -176.634003, + -185.574005, 0.000000, -176.634003, + -171.177002, 5.000000, -161.817001, + -171.177002, 0.000000, -161.817001, + -165.518997, 5.000000, -167.315994, + -165.518997, 0.000000, -167.315994, + -164.998001, 5.000000, -167.817001, + -164.998001, 0.000000, -167.817001, + -179.388000, 5.000000, -182.634003, + -179.388000, 0.000000, -182.634003, + -197.972000, 10.000000, -10.887000, + -197.972000, 0.000000, -10.887000, + -191.117004, 10.000000, -6.423000, + -191.117004, 0.000000, -6.423000, + -178.117996, 10.000000, -32.037998, + -178.117996, 0.000000, -32.037998, + -181.388000, 10.000000, -33.819000, + -181.388000, 0.000000, -33.819000, + -187.158997, 10.000000, -23.177000, + -187.158997, 0.000000, -23.177000, + -189.699997, 10.000000, -24.613001, + -189.699997, 0.000000, -24.613001, + -190.481995, 10.000000, -23.177000, + -190.481995, 0.000000, -23.177000, + -194.735001, 10.000000, -167.727997, + -194.735001, 0.000000, -167.727997, + -180.345001, 10.000000, -152.910995, + -180.345001, 0.000000, -152.910995, + -171.177002, 10.000000, -161.817001, + -185.574005, 10.000000, -176.634003, + 93.318001, 5.000000, 113.432999, + 93.318001, 0.000000, 113.432999, + 80.539001, 5.000000, 127.113998, + 80.539001, 0.000000, 127.113998, + 85.982002, 5.000000, 132.190002, + 85.982002, 0.000000, 132.190002, + 98.767998, 5.000000, 118.510002, + 98.767998, 0.000000, 118.510002, + -15.040000, 44.000000, 62.573002, + -15.040000, 41.000000, 62.573002, + -6.106000, 44.000000, 41.154999, + -6.106000, 41.000000, 41.154999, + -19.841000, 44.000000, 35.422001, + -19.841000, 41.000000, 35.422001, + -28.782000, 44.000000, 56.840000, + -28.782000, 41.000000, 56.840000, + -19.781000, 41.000000, 34.341999, + -19.781000, 0.000000, 34.341999, + -24.101000, 41.000000, 44.827999, + -24.101000, 0.000000, 44.827999, + -29.209999, 41.000000, 57.217999, + -29.209999, 0.000000, 57.217999, + -14.913000, 41.000000, 63.118000, + -14.913000, 0.000000, 63.118000, + -5.484000, 41.000000, 40.230999, + -5.484000, 0.000000, 40.230999, + -16.906000, 41.000000, 35.521999, + -16.906000, 0.000000, 35.521999, + -19.781000, 7.500000, 34.341999, + -16.906000, 7.500000, 35.521999, + -16.163000, 7.500000, 33.719002, + -16.163000, 0.000000, 33.719002, + -19.039000, 7.500000, 32.539001, + -19.039000, 0.000000, 32.539001, + -34.405998, 22.000000, -142.623993, + -34.405998, 0.000000, -142.623993, + -40.931999, 22.000000, -130.869003, + -40.931999, 0.000000, -130.869003, + -41.527000, 22.000000, -129.800003, + -41.527000, 0.000000, -129.800003, + -29.812000, 22.000000, -123.288002, + -29.812000, 0.000000, -123.288002, + -20.289000, 22.000000, -118.011002, + -20.289000, 0.000000, -118.011002, + -7.838000, 22.000000, -111.098000, + -7.838000, 0.000000, -111.098000, + 0.635000, 22.000000, -106.400002, + 0.635000, 0.000000, -106.400002, + 3.009000, 22.000000, -110.664001, + 3.009000, 0.000000, -110.664001, + 3.316000, 22.000000, -111.220001, + 3.316000, 0.000000, -111.220001, + 7.750000, 22.000000, -119.212997, + 7.750000, 0.000000, -119.212997, + -22.730000, 22.000000, -136.134003, + -22.730000, 0.000000, -136.134003, + -30.728001, 22.000000, -140.576004, + -30.728001, 0.000000, -140.576004, + 3.009000, 20.000000, -110.664001, + 0.635000, 20.000000, -106.400002, + -7.838000, 20.000000, -111.098000, + -20.289000, 20.000000, -118.011002, + -29.812000, 20.000000, -123.288002, + -41.527000, 20.000000, -129.800003, + -42.155998, 20.000000, -130.145004, + -42.155998, 0.000000, -130.145004, + -53.491001, 20.000000, -109.718002, + -53.491001, 0.000000, -109.718002, + -41.085999, 20.000000, -102.827003, + -41.085999, 0.000000, -102.827003, + -18.049000, 20.000000, -90.046997, + -18.049000, 0.000000, -90.046997, + -19.039000, 20.000000, -88.254997, + -19.039000, 0.000000, -88.254997, + -7.965000, 20.000000, -82.110001, + -7.965000, 0.000000, -82.110001, + 6.733000, 20.000000, -108.603996, + 6.733000, 0.000000, -108.603996, + -69.753998, 15.000000, 42.847000, + -69.753998, 0.000000, 42.847000, + -64.824997, 15.000000, 28.565001, + -64.824997, 0.000000, 28.565001, + -66.872002, 15.000000, 27.863001, + -66.872002, 0.000000, 27.863001, + -69.038002, 15.000000, 27.106001, + -69.038002, 0.000000, 27.106001, + -74.689003, 15.000000, 25.158001, + -74.689003, 0.000000, 25.158001, + -79.683998, 15.000000, 39.318001, + -79.683998, 0.000000, 39.318001, + -97.544998, 10.000000, 199.057999, + -97.544998, 0.000000, 199.057999, + -108.097000, 10.000000, 184.408997, + -108.097000, 0.000000, 184.408997, + -110.724998, 10.000000, 185.867004, + -110.724998, 0.000000, 185.867004, + -112.136002, 10.000000, 183.261993, + -112.136002, 0.000000, 183.261993, + -120.067001, 10.000000, 191.856003, + -120.067001, 0.000000, 191.856003, + -107.148003, 10.000000, 209.197998, + -107.148003, 0.000000, 209.197998, + -99.565002, 10.000000, 201.595993, + -99.565002, 0.000000, 201.595993, + -99.110001, 10.000000, 201.149994, + -99.110001, 0.000000, 201.149994, + -177.675995, 18.000000, 38.283001, + -177.675995, 0.000000, 38.283001, + -183.380997, 18.000000, 31.270000, + -183.380997, 0.000000, 31.270000, + -184.718002, 18.000000, 32.728001, + -184.718002, 0.000000, 32.728001, + -192.809006, 18.000000, 41.533001, + -192.809006, 0.000000, 41.533001, + -194.360992, 18.000000, 40.242001, + -194.360992, 0.000000, 40.242001, + -202.438995, 18.000000, 50.683998, + -202.438995, 0.000000, 50.683998, + -194.313995, 18.000000, 57.185001, + -194.313995, 0.000000, 57.185001, + -187.647003, 18.000000, 48.747002, + -187.647003, 0.000000, 48.747002, + -178.880005, 18.000000, 39.551998, + -178.880005, 0.000000, 39.551998, + -194.313995, 28.000000, 57.185001, + -199.268997, 28.000000, 63.708000, + -199.268997, 0.000000, 63.708000, + -209.701004, 28.000000, 78.445999, + -209.701004, 0.000000, 78.445999, + -199.403000, 28.000000, 87.619003, + -199.403000, 0.000000, 87.619003, + -182.565002, 28.000000, 66.346001, + -182.565002, 0.000000, 66.346001, + -169.873001, 28.000000, 50.293999, + -169.873001, 0.000000, 50.293999, + -168.701996, 28.000000, 48.813999, + -168.701996, 0.000000, 48.813999, + -177.675995, 28.000000, 38.283001, + -178.880005, 28.000000, 39.551998, + -187.647003, 28.000000, 48.747002, + -183.380997, 21.000000, 31.270000, + -189.947006, 21.000000, 24.357000, + -189.947006, 0.000000, 24.357000, + -199.796997, 21.000000, 15.462000, + -199.796997, 0.000000, 15.462000, + -212.048004, 21.000000, 6.679000, + -212.048004, 0.000000, 6.679000, + -212.931000, 21.000000, 8.327000, + -212.931000, 0.000000, 8.327000, + -214.421997, 21.000000, 11.110000, + -214.421997, 0.000000, 11.110000, + -217.457993, 21.000000, 16.709000, + -217.457993, 0.000000, 16.709000, + -225.395004, 21.000000, 30.613001, + -225.395004, 0.000000, 30.613001, + -232.804993, 21.000000, 41.366001, + -232.804993, 0.000000, 41.366001, + -239.806000, 21.000000, 50.951000, + -239.806000, 0.000000, 50.951000, + -240.354004, 21.000000, 51.863998, + -240.354004, 0.000000, 51.863998, + -222.513000, 21.000000, 67.415001, + -222.513000, 0.000000, 67.415001, + -209.701004, 21.000000, 78.445999, + -199.268997, 21.000000, 63.708000, + -194.313995, 21.000000, 57.185001, + -202.438995, 21.000000, 50.683998, + -194.360992, 21.000000, 40.242001, + -192.809006, 21.000000, 41.533001, + -184.718002, 21.000000, 32.728001, + -182.718994, 10.000000, -2.827000, + -182.718994, 0.000000, -2.827000, + -170.735001, 10.000000, -28.041000, + -170.735001, 0.000000, -28.041000, + -190.429001, 10.000000, -38.706001, + -190.429001, 0.000000, -38.706001, + -197.584000, 10.000000, -27.372999, + -197.584000, 0.000000, -27.372999, + -170.975998, 7.500000, -118.345001, + -170.975998, 0.000000, -118.345001, + -180.845993, 7.500000, -110.307999, + -180.845993, 0.000000, -110.307999, + -173.009003, 7.500000, -96.057999, + -173.009003, 0.000000, -96.057999, + -161.681000, 7.500000, -101.045998, + -161.681000, 0.000000, -101.045998, + -178.158005, 7.500000, -93.920998, + -178.158005, 0.000000, -93.920998, + -174.011993, 7.500000, -84.347000, + -174.011993, 0.000000, -84.347000, + -157.421005, 7.500000, -90.481003, + -157.421005, 0.000000, -90.481003, + -191.651993, 7.500000, -76.710999, + -191.651993, 0.000000, -76.710999, + -179.375000, 7.500000, -96.725998, + -179.375000, 0.000000, -96.725998, + -197.014999, 7.500000, -89.089996, + -197.014999, 0.000000, -89.089996, + -80.680000, 15.000000, 79.025002, + -80.680000, 0.000000, 79.025002, + -83.989998, 15.000000, 77.556000, + -83.989998, 0.000000, 77.556000, + -92.958000, 15.000000, 92.818001, + -92.958000, 0.000000, 92.818001, + -82.874001, 15.000000, 102.703003, + -82.874001, 0.000000, 102.703003, + -73.905998, 15.000000, 93.508003, + -73.905998, 0.000000, 93.508003, + -72.615997, 15.000000, 90.824997, + -72.615997, 0.000000, 90.824997, + -81.958000, 15.000000, 81.608002, + -81.958000, 0.000000, 81.608002, + -53.563999, 7.500000, 113.055000, + -53.563999, 0.000000, 113.055000, + -48.997002, 7.500000, 114.713997, + -48.997002, 0.000000, 114.713997, + -46.876999, 7.500000, 112.253998, + -46.876999, 0.000000, 112.253998, + -40.931999, 7.500000, 115.125000, + -40.931999, 0.000000, 115.125000, + -34.271999, 7.500000, 107.889999, + -34.271999, 0.000000, 107.889999, + -30.306999, 7.500000, 98.349998, + -30.306999, 0.000000, 98.349998, + -31.209000, 7.500000, 97.871002, + -31.209000, 0.000000, 97.871002, + -28.722000, 7.500000, 92.338997, + -28.722000, 0.000000, 92.338997, + -42.283001, 7.500000, 86.683998, + -42.283001, 0.000000, 86.683998, + -45.827000, 7.500000, 94.364998, + -45.827000, 0.000000, 94.364998, + -47.372002, 7.500000, 97.972000, + -47.372002, 0.000000, 97.972000, + -52.334000, 7.500000, 109.526001, + -52.334000, 0.000000, 109.526001, + -54.146000, 7.500000, 112.498001, + -54.146000, 0.000000, 112.498001, + -143.839996, 10.000000, 125.377998, + -143.839996, 0.000000, 125.377998, + -141.031006, 10.000000, 127.315002, + -141.031006, 0.000000, 127.315002, + -138.557007, 10.000000, 129.007004, + -138.557007, 0.000000, 129.007004, + -135.854996, 10.000000, 130.865997, + -135.854996, 0.000000, 130.865997, + -111.834999, 10.000000, 112.231003, + -111.834999, 0.000000, 112.231003, + -119.994003, 10.000000, 104.750999, + -119.994003, 0.000000, 104.750999, + -122.821999, 10.000000, 102.156998, + -122.821999, 0.000000, 102.156998, + -126.432999, 10.000000, 98.839996, + -126.432999, 0.000000, 98.839996, + -139.934998, 10.000000, 86.449997, + -139.934998, 0.000000, 86.449997, + -141.091003, 10.000000, 85.392998, + -141.091003, 0.000000, 85.392998, + -145.337997, 10.000000, 85.614998, + -145.337997, 0.000000, 85.614998, + -164.535995, 10.000000, 107.968002, + -164.535995, 0.000000, 107.968002, + -164.147995, 10.000000, 111.406998, + -164.147995, 0.000000, 111.406998, + -54.186001, 15.000000, 129.552002, + -54.186001, 0.000000, 129.552002, + -36.205002, 15.000000, 146.360992, + -36.205002, 0.000000, 146.360992, + -35.616001, 15.000000, 145.792999, + -35.616001, 0.000000, 145.792999, + -24.863001, 15.000000, 135.485001, + -24.863001, 0.000000, 135.485001, + -26.181000, 15.000000, 134.205002, + -26.181000, 0.000000, 134.205002, + -25.511999, 15.000000, 133.559998, + -25.511999, 0.000000, 133.559998, + -28.962000, 15.000000, 130.108994, + -28.962000, 0.000000, 130.108994, + -29.691000, 15.000000, 130.776993, + -29.691000, 0.000000, 130.776993, + -31.577000, 15.000000, 128.951004, + -31.577000, 0.000000, 128.951004, + -29.457001, 15.000000, 126.334999, + -29.457001, 0.000000, 126.334999, + -26.007000, 15.000000, 121.514999, + -26.007000, 0.000000, 121.514999, + -25.518999, 15.000000, 121.882004, + -25.518999, 0.000000, 121.882004, + -22.542999, 15.000000, 117.842003, + -22.542999, 0.000000, 117.842003, + -23.091000, 15.000000, 117.441002, + -23.091000, 0.000000, 117.441002, + -20.370001, 15.000000, 113.644997, + -20.370001, 0.000000, 113.644997, + -34.271999, 15.000000, 107.889999, + -40.931999, 15.000000, 115.125000, + -3.645000, 15.000000, 179.143005, + -3.645000, 0.000000, 179.143005, + 8.064000, 15.000000, 168.858002, + 8.064000, 0.000000, 168.858002, + -16.049999, 15.000000, 143.544998, + -16.049999, 0.000000, 143.544998, + -24.247999, 15.000000, 134.951004, + -24.247999, 0.000000, 134.951004, + -69.198997, 7.500000, 79.771004, + -69.198997, 0.000000, 79.771004, + -79.209000, 7.500000, 76.053001, + -79.209000, 0.000000, 76.053001, + -80.680000, 7.500000, 79.025002, + -81.958000, 7.500000, 81.608002, + -72.615997, 7.500000, 90.824997, + -16.371000, 15.000000, 104.550003, + -16.371000, 0.000000, 104.550003, + -30.306999, 15.000000, 98.349998, + -79.476997, 15.000000, 57.764000, + -79.476997, 0.000000, 57.764000, + -88.417000, 15.000000, 54.914001, + -88.417000, 0.000000, 54.914001, + -96.113998, 15.000000, 71.544998, + -96.113998, 0.000000, 71.544998, + -87.688004, 15.000000, 75.719002, + -87.688004, 0.000000, 75.719002, + -22.235001, 15.000000, 78.068001, + -22.235001, 0.000000, 78.068001, + -28.722000, 15.000000, 92.338997, + -31.209000, 15.000000, 97.871002, + -15.722000, 15.000000, 104.762001, + -15.722000, 0.000000, 104.762001, + -6.748000, 15.000000, 84.424004, + -6.748000, 0.000000, 84.424004, + -43.012001, 15.000000, 69.552002, + -43.012001, 0.000000, 69.552002, + -47.578999, 15.000000, 82.698997, + -47.578999, 0.000000, 82.698997, + -50.575001, 15.000000, 92.773003, + -50.575001, 0.000000, 92.773003, + -45.827000, 15.000000, 94.364998, + -42.283001, 15.000000, 86.683998, + -35.817001, 15.000000, 72.501999, + -35.817001, 0.000000, 72.501999, + -35.409000, 15.000000, 71.278000, + -35.409000, 0.000000, 71.278000, + -41.581001, 15.000000, 68.727997, + -41.581001, 0.000000, 68.727997, + -42.056000, 15.000000, 69.897003, + -42.056000, 0.000000, 69.897003, + -96.862999, 31.200001, 88.888000, + -96.862999, 0.000000, 88.888000, + -92.958000, 31.200001, 92.818001, + -83.989998, 31.200001, 77.556000, + -87.688004, 31.200001, 75.719002, + -96.113998, 31.200001, 71.544998, + -88.417000, 31.200001, 54.914001, + -116.616997, 31.200001, 45.908001, + -116.616997, 0.000000, 45.908001, + -127.810997, 31.200001, 57.686001, + -127.810997, 0.000000, 57.686001, + -62.771999, 10.000000, 181.447998, + -62.771999, 0.000000, 181.447998, + -53.717999, 10.000000, 168.067001, + -53.717999, 0.000000, 168.067001, + -68.141998, 10.000000, 153.317993, + -68.141998, 0.000000, 153.317993, + -77.570999, 10.000000, 170.817001, + -77.570999, 0.000000, 170.817001, + -86.751999, 10.000000, 164.283005, + -86.751999, 0.000000, 164.283005, + -20.704000, 10.000000, 211.235001, + -20.704000, 0.000000, 211.235001, + -12.318000, 10.000000, 202.919998, + -12.318000, 0.000000, 202.919998, + -37.327999, 10.000000, 177.339996, + -37.327999, 0.000000, 177.339996, + -40.717999, 10.000000, 180.490005, + -40.717999, 0.000000, 180.490005, + -51.077000, 10.000000, 170.593994, + -51.077000, 0.000000, 170.593994, + -139.606995, 10.000000, 142.007996, + -139.606995, 0.000000, 142.007996, + -143.578995, 10.000000, 139.225998, + -143.578995, 0.000000, 139.225998, + -146.052994, 10.000000, 137.511002, + -146.052994, 0.000000, 137.511002, + -159.574997, 10.000000, 156.490997, + -159.574997, 0.000000, 156.490997, + -152.485992, 10.000000, 161.600006, + -152.485992, 0.000000, 161.600006, + -147.464005, 10.000000, 154.431000, + -147.464005, 0.000000, 154.431000, + -146.675003, 10.000000, 153.328995, + -146.675003, 0.000000, 153.328995, + -146.261002, 10.000000, 152.684006, + -146.261002, 0.000000, 152.684006, + -142.401993, 10.000000, 146.350006, + -142.401993, 0.000000, 146.350006, + -145.485001, 10.000000, 136.720993, + -145.485001, 0.000000, 136.720993, + -156.156998, 10.000000, 129.039993, + -156.156998, 0.000000, 129.039993, + -156.177002, 10.000000, 129.029007, + -156.177002, 0.000000, 129.029007, + -156.725998, 10.000000, 129.807999, + -156.725998, 0.000000, 129.807999, + -158.136993, 10.000000, 128.783997, + -158.136993, 0.000000, 128.783997, + -158.270996, 10.000000, 128.973007, + -158.270996, 0.000000, 128.973007, + -158.798996, 10.000000, 128.639008, + -164.195007, 10.000000, 135.417999, + -167.011002, 10.000000, 139.380997, + -172.761002, 10.000000, 147.139999, + 134.363007, 15.000000, -18.679001, + 134.363007, 0.000000, -18.679001, + 110.115997, 15.000000, 10.275000, + 110.115997, 0.000000, 10.275000, + 106.638000, 15.000000, 7.180000, + 106.638000, 0.000000, 7.180000, + 91.064003, 15.000000, 25.593000, + 91.064003, 0.000000, 25.593000, + 89.412003, 15.000000, 27.452000, + 89.412003, 0.000000, 27.452000, + 93.859001, 15.000000, 31.504000, + 93.859001, 0.000000, 31.504000, + 93.504997, 15.000000, 31.915001, + 93.504997, 0.000000, 31.915001, + 105.908997, 15.000000, 42.668999, + 105.908997, 0.000000, 42.668999, + 118.147003, 15.000000, 55.827000, + 118.147003, 0.000000, 55.827000, + 128.552002, 15.000000, 56.138000, + 128.552002, 0.000000, 56.138000, + 148.184998, 15.000000, 38.404999, + 148.184998, 0.000000, 38.404999, + 150.123993, 15.000000, 38.493999, + 150.123993, 0.000000, 38.493999, + 154.630997, 15.000000, 34.353001, + 154.630997, 0.000000, 34.353001, + 154.852005, 15.000000, 32.382999, + 154.852005, 0.000000, 32.382999, + 165.216995, 15.000000, 23.021000, + 165.216995, 0.000000, 23.021000, + 165.423996, 15.000000, 13.581000, + 165.423996, 0.000000, 13.581000, + 157.600006, 15.000000, 5.010000, + 157.600006, 0.000000, 5.010000, + 158.054993, 15.000000, 4.498000, + 158.054993, 0.000000, 4.498000, + 64.135002, 15.000000, -42.825001, + 64.135002, 0.000000, -42.825001, + 79.280998, 15.000000, -37.325001, + 79.280998, 0.000000, -37.325001, + 79.474998, 15.000000, -38.027000, + 79.474998, 0.000000, -38.027000, + 84.818001, 15.000000, -36.680000, + 84.818001, 0.000000, -36.680000, + 84.564003, 15.000000, -35.455002, + 84.564003, 0.000000, -35.455002, + 90.100998, 15.000000, -32.750000, + 90.100998, 0.000000, -32.750000, + 97.643997, 15.000000, -44.784000, + 97.643997, 0.000000, -44.784000, + 66.809998, 15.000000, -52.365002, + 66.809998, 0.000000, -52.365002, + 63.419998, 15.000000, -43.159000, + 63.419998, 0.000000, -43.159000, + 111.907997, 15.000000, -41.744999, + 111.907997, 0.000000, -41.744999, + 88.602997, 15.000000, -28.798000, + 88.602997, 0.000000, -28.798000, + 95.203003, 15.000000, -25.158001, + 95.203003, 0.000000, -25.158001, + 98.694000, 15.000000, -30.134001, + 98.694000, 0.000000, -30.134001, + 101.469002, 15.000000, -28.396999, + 101.469002, 0.000000, -28.396999, + 102.078003, 15.000000, -20.527000, + 102.078003, 0.000000, -20.527000, + 102.892998, 15.000000, -21.962999, + 102.892998, 0.000000, -21.962999, + 104.191002, 15.000000, -21.173000, + 104.191002, 0.000000, -21.173000, + 116.970001, 15.000000, -37.236000, + 116.970001, 0.000000, -37.236000, + 117.237000, 15.000000, -37.536999, + 117.237000, 0.000000, -37.536999, + 112.175003, 15.000000, -41.966999, + 112.175003, 0.000000, -41.966999, + 62.375999, 15.000000, -38.951000, + 62.375999, 0.000000, -38.951000, + 60.175999, 15.000000, -34.097000, + 60.175999, 0.000000, -34.097000, + 59.748001, 15.000000, -33.151001, + 59.748001, 0.000000, -33.151001, + 57.133999, 15.000000, -30.011999, + 57.133999, 0.000000, -30.011999, + 57.930000, 15.000000, -29.143000, + 57.930000, 0.000000, -29.143000, + 56.023998, 15.000000, -24.947001, + 56.023998, 0.000000, -24.947001, + 51.102001, 15.000000, -14.082000, + 51.102001, 0.000000, -14.082000, + 46.220001, 15.000000, -3.306000, + 46.220001, 0.000000, -3.306000, + 42.181000, 15.000000, 5.611000, + 42.181000, 0.000000, 5.611000, + 39.881001, 15.000000, 10.676000, + 39.881001, 0.000000, 10.676000, + 35.902000, 15.000000, 19.459000, + 35.902000, 0.000000, 19.459000, + 33.808998, 15.000000, 22.476000, + 33.808998, 0.000000, 22.476000, + 29.329000, 15.000000, 28.931999, + 29.329000, 0.000000, 28.931999, + 30.150999, 15.000000, 29.288000, + 30.150999, 0.000000, 29.288000, + 52.486000, 15.000000, 39.018002, + 52.486000, 0.000000, 39.018002, + 66.716003, 15.000000, 45.207001, + 66.716003, 0.000000, 45.207001, + 68.702003, 15.000000, 43.035999, + 68.702003, 0.000000, 43.035999, + 69.056999, 15.000000, 43.403999, + 69.056999, 0.000000, 43.403999, + 70.581001, 15.000000, 41.723000, + 70.581001, 0.000000, 41.723000, + 72.085999, 15.000000, 40.063999, + 72.085999, 0.000000, 40.063999, + 71.718002, 15.000000, 39.730000, + 71.718002, 0.000000, 39.730000, + 73.737999, 15.000000, 37.526001, + 73.737999, 0.000000, 37.526001, + 74.580002, 15.000000, 38.339001, + 74.580002, 0.000000, 38.339001, + 80.865997, 15.000000, 31.103001, + 80.865997, 0.000000, 31.103001, + 83.125999, 15.000000, 28.497999, + 83.125999, 0.000000, 28.497999, + 87.874001, 15.000000, 23.021000, + 87.874001, 0.000000, 23.021000, + 120.546997, 15.000000, -33.417999, + 120.546997, 0.000000, -33.417999, + -52.132999, 15.000000, 24.691000, + -52.132999, 0.000000, 24.691000, + -50.448002, 15.000000, 23.054001, + -50.448002, 0.000000, 23.054001, + -48.636002, 15.000000, 17.934000, + -48.636002, 0.000000, 17.934000, + -44.389999, 15.000000, 19.625999, + -44.389999, 0.000000, 19.625999, + -41.220001, 15.000000, 11.911000, + -41.220001, 0.000000, 11.911000, + -54.955002, 15.000000, 5.566000, + -54.955002, 0.000000, 5.566000, + -60.605999, 15.000000, 19.358999, + -60.605999, 0.000000, 19.358999, + -60.833000, 15.000000, 19.926001, + -60.833000, 0.000000, 19.926001, + -56.172001, 15.000000, 21.663000, + -56.172001, 0.000000, 21.663000, + -56.786999, 15.000000, 23.021000, + -56.786999, 0.000000, 23.021000, + -62.859001, 15.000000, -4.542000, + -62.859001, 0.000000, -4.542000, + -67.674004, 15.000000, -0.712000, + -67.674004, 0.000000, -0.712000, + -63.421001, 15.000000, 5.522000, + -63.421001, 0.000000, 5.522000, + -67.875000, 15.000000, 9.307000, + -67.875000, 0.000000, 9.307000, + -66.263000, 15.000000, 11.533000, + -66.263000, 0.000000, 11.533000, + -67.594002, 15.000000, 15.095000, + -67.594002, 0.000000, 15.095000, + -68.055000, 15.000000, 16.174999, + -68.055000, 0.000000, 16.174999, + -64.498001, 15.000000, 17.688999, + -64.498001, 0.000000, 17.688999, + -62.557999, 15.000000, 18.524000, + -62.557999, 0.000000, 18.524000, + -73.719002, 23.200001, 14.372000, + -73.719002, 0.000000, 14.372000, + -78.292999, 23.200001, 7.871000, + -78.292999, 0.000000, 7.871000, + -96.703003, 23.200001, 22.743000, + -96.703003, 0.000000, 22.743000, + -91.981003, 23.200001, 28.921000, + -91.981003, 0.000000, 28.921000, + -91.365997, 23.200001, 28.497999, + -91.365997, 0.000000, 28.497999, + -16.691999, 15.000000, 23.099001, + -16.691999, 0.000000, 23.099001, + -25.865999, 15.000000, 18.646000, + -25.865999, 0.000000, 18.646000, + -28.936001, 15.000000, 25.580999, + -28.936001, 0.000000, 25.580999, + -19.975000, 15.000000, 30.334999, + -19.975000, 0.000000, 30.334999, + -1.639000, 20.000000, 2.271000, + -1.639000, 0.000000, 2.271000, + 22.434000, 20.000000, 12.501000, + 22.434000, 0.000000, 12.501000, + 26.280001, 20.000000, 4.119000, + 1.350000, 20.000000, -5.187000, + -66.872002, 7.500000, 27.863001, + -62.557999, 7.500000, 18.524000, + -64.498001, 7.500000, 17.688999, + -69.038002, 7.500000, 27.106001, + -14.692000, 15.000000, 32.939999, + -14.692000, 0.000000, 32.939999, + -11.329000, 15.000000, 25.604000, + -11.329000, 0.000000, 25.604000, + -2.856000, 20.000000, 1.748000, + -2.856000, 0.000000, 1.748000, + -7.738000, 20.000000, 14.026000, + -7.738000, 0.000000, 14.026000, + 16.597000, 20.000000, 25.225000, + 16.597000, 0.000000, 25.225000, + -50.441002, 15.000000, 34.786999, + -50.441002, 0.000000, 34.786999, + -44.750999, 15.000000, 37.103001, + -44.750999, 0.000000, 37.103001, + -41.286999, 15.000000, 28.409000, + -41.286999, 0.000000, 28.409000, + -29.558001, 15.000000, 26.983999, + -29.558001, 0.000000, 26.983999, + -48.816002, 15.000000, 30.413000, + -48.816002, 0.000000, 30.413000, + -15.187000, 15.000000, 34.141998, + -15.187000, 0.000000, 34.141998, + -2.328000, 15.000000, 39.652000, + -2.328000, 0.000000, 39.652000, + -7.203000, 15.000000, 50.316002, + -7.203000, 0.000000, 50.316002, + 2.701000, 15.000000, 54.636002, + 2.701000, 0.000000, 54.636002, + 8.111000, 15.000000, 43.070000, + 8.111000, 0.000000, 43.070000, + 8.552000, 15.000000, 43.280998, + 8.552000, 0.000000, 43.280998, + 8.759000, 15.000000, 42.835999, + 8.759000, 0.000000, 42.835999, + 8.318000, 15.000000, 42.624001, + 8.318000, 0.000000, 42.624001, + 9.334000, 15.000000, 40.442001, + 9.334000, 0.000000, 40.442001, + 9.783000, 15.000000, 40.653999, + 9.783000, 0.000000, 40.653999, + 10.010000, 15.000000, 40.209000, + 10.010000, 0.000000, 40.209000, + 9.548000, 15.000000, 39.986000, + 9.548000, 0.000000, 39.986000, + 14.363000, 15.000000, 29.656000, + 14.363000, 0.000000, 29.656000, + -8.373000, 15.000000, 19.146999, + -8.373000, 0.000000, 19.146999, + -8.527000, 15.000000, 19.481001, + -8.527000, 0.000000, 19.481001, + -55.249001, 15.000000, 47.744999, + -55.249001, 0.000000, 47.744999, + -54.561001, 15.000000, 28.231001, + -54.561001, 0.000000, 28.231001, + -60.030998, 15.000000, 42.580002, + -60.030998, 0.000000, 42.580002, + -61.160999, 15.000000, 45.841000, + -61.160999, 0.000000, 45.841000, + -62.751999, 15.000000, 24.691000, + -62.751999, 0.000000, 24.691000, + -63.259998, 15.000000, 24.568001, + -63.259998, 0.000000, 24.568001, + -78.252998, 15.000000, 20.761000, + -78.252998, 0.000000, 20.761000, + -72.442001, 15.000000, 16.264000, + -72.442001, 0.000000, 16.264000, + -73.719002, 15.000000, 14.372000, + -91.365997, 15.000000, 28.497999, + -85.569000, 15.000000, 35.265999, + -85.569000, 0.000000, 35.265999, + -82.351997, 15.000000, 38.126999, + -82.351997, 0.000000, 38.126999, + -24.101000, 15.000000, 44.827999, + -31.417000, 15.000000, 41.834000, + -31.417000, 0.000000, 41.834000, + -32.199001, 15.000000, 43.726002, + -32.199001, 0.000000, 43.726002, + -35.542999, 15.000000, 42.390999, + -35.542999, 0.000000, 42.390999, + -39.882000, 15.000000, 53.277000, + -39.882000, 0.000000, 53.277000, + -29.209999, 15.000000, 57.217999, + -34.933998, 15.000000, 41.043999, + -34.933998, 0.000000, 41.043999, + 6.332000, 15.000000, 132.835999, + 6.332000, 0.000000, 132.835999, + 6.599000, 15.000000, 128.472000, + 6.599000, 0.000000, 128.472000, + 1.557000, 15.000000, 126.691002, + 1.557000, 0.000000, 126.691002, + 13.694000, 15.000000, 95.878998, + 13.694000, 0.000000, 95.878998, + 8.271000, 15.000000, 92.338997, + 8.271000, 0.000000, 92.338997, + 2.179000, 15.000000, 88.487000, + 2.179000, 0.000000, 88.487000, + 0.655000, 15.000000, 88.253998, + 0.655000, 0.000000, 88.253998, + -0.348000, 15.000000, 88.598999, + -0.348000, 0.000000, 88.598999, + -1.158000, 15.000000, 89.544998, + -1.158000, 0.000000, 89.544998, + -8.353000, 15.000000, 109.214996, + -8.353000, 0.000000, 109.214996, + -9.744000, 15.000000, 112.297997, + -9.744000, 0.000000, 112.297997, + -10.827000, 15.000000, 116.606003, + -10.827000, 0.000000, 116.606003, + -11.482000, 15.000000, 116.516998, + -11.482000, 0.000000, 116.516998, + -14.465000, 15.000000, 126.803001, + -14.465000, 0.000000, 126.803001, + -12.753000, 15.000000, 130.153000, + -12.753000, 0.000000, 130.153000, + 11.742000, 7.500000, 165.173004, + 11.742000, 0.000000, 165.173004, + -9.222000, 7.500000, 143.399994, + -9.222000, 0.000000, 143.399994, + -16.049999, 7.500000, 143.544998, + 8.064000, 7.500000, 168.858002, + 16.583000, 7.500000, 177.462006, + 16.583000, 0.000000, 177.462006, + 18.436001, 7.500000, 172.419998, + 18.436001, 0.000000, 172.419998, + 11.642000, 15.000000, 194.104004, + 11.642000, 0.000000, 194.104004, + 14.831000, 15.000000, 185.210007, + 14.831000, 0.000000, 185.210007, + 13.628000, 15.000000, 184.820007, + 13.628000, 0.000000, 184.820007, + 16.583000, 15.000000, 177.462006, + 11.334000, 15.000000, 133.537003, + 11.334000, 0.000000, 133.537003, + 11.956000, 15.000000, 133.626007, + 11.956000, 0.000000, 133.626007, + 26.527000, 15.000000, 146.639008, + 26.527000, 0.000000, 146.639008, + 47.130001, 15.000000, 123.663002, + 47.130001, 0.000000, 123.663002, + 23.912001, 15.000000, 102.546997, + 23.912001, 0.000000, 102.546997, + 12.812000, 15.000000, 116.717003, + 12.812000, 0.000000, 116.717003, + 7.201000, 15.000000, 132.957993, + 7.201000, 0.000000, 132.957993, + 58.257000, 15.000000, 156.179001, + 58.257000, 0.000000, 156.179001, + 49.530998, 15.000000, 149.610992, + 49.530998, 0.000000, 149.610992, + 48.541000, 15.000000, 150.947006, + 48.541000, 0.000000, 150.947006, + 47.557999, 15.000000, 150.246002, + 47.557999, 0.000000, 150.246002, + 46.969002, 15.000000, 150.802002, + 46.969002, 0.000000, 150.802002, + 46.000000, 15.000000, 149.990005, + 46.000000, 0.000000, 149.990005, + 38.952000, 15.000000, 157.725998, + 38.952000, 0.000000, 157.725998, + 39.901001, 15.000000, 158.572006, + 39.901001, 0.000000, 158.572006, + 37.333000, 15.000000, 161.834000, + 37.333000, 0.000000, 161.834000, + 37.681000, 15.000000, 162.100998, + 37.681000, 0.000000, 162.100998, + 48.046001, 15.000000, 169.792999, + 48.046001, 0.000000, 169.792999, + 33.889000, 15.000000, 170.326996, + 33.889000, 0.000000, 170.326996, + 44.081001, 15.000000, 175.970993, + 44.081001, 0.000000, 175.970993, + 32.618999, 15.000000, 169.636993, + 32.618999, 0.000000, 169.636993, + 7.603000, 15.000000, 197.955994, + 7.603000, 0.000000, 197.955994, + 14.925000, 15.000000, 205.324997, + 14.925000, 0.000000, 205.324997, + 18.937000, 15.000000, 201.529007, + 18.937000, 0.000000, 201.529007, + 21.739000, 15.000000, 204.735001, + 21.739000, 0.000000, 204.735001, + 29.629999, 15.000000, 197.399002, + 29.629999, 0.000000, 197.399002, + 35.514000, 15.000000, 190.408005, + 35.514000, 0.000000, 190.408005, + 44.474998, 15.000000, 176.182007, + 44.474998, 0.000000, 176.182007, + 33.327999, 15.000000, 171.128998, + 33.327999, 0.000000, 171.128998, + 26.667000, 15.000000, 168.901993, + 26.667000, 0.000000, 168.901993, + 19.392000, 15.000000, 186.869003, + 19.392000, 0.000000, 186.869003, + 68.542000, 15.000000, 142.475998, + 68.542000, 0.000000, 142.475998, + 59.834999, 15.000000, 134.828995, + 59.834999, 0.000000, 134.828995, + 51.470001, 15.000000, 144.001007, + 51.470001, 0.000000, 144.001007, + 51.890999, 15.000000, 144.367996, + 51.890999, 0.000000, 144.367996, + 52.813999, 15.000000, 145.169998, + 52.813999, 0.000000, 145.169998, + 54.752998, 15.000000, 130.365005, + 54.752998, 0.000000, 130.365005, + 34.036999, 15.000000, 153.339996, + 34.036999, 0.000000, 153.339996, + 44.287998, 15.000000, 148.520004, + 44.287998, 0.000000, 148.520004, + 49.376999, 15.000000, 142.699005, + 49.376999, 0.000000, 142.699005, + 51.269001, 15.000000, 144.223999, + 51.269001, 0.000000, 144.223999, + -110.424004, 10.000000, 160.018997, + -110.424004, 0.000000, 160.018997, + -119.773003, 10.000000, 172.520004, + -119.773003, 0.000000, 172.520004, + -114.236000, 10.000000, 176.973007, + -114.236000, 0.000000, 176.973007, + -111.889000, 10.000000, 173.912003, + -111.889000, 0.000000, 173.912003, + -106.773003, 10.000000, 177.539993, + -106.773003, 0.000000, 177.539993, + -99.110001, 10.000000, 168.468002, + -99.110001, 0.000000, 168.468002, + -90.136002, 10.000000, 175.169006, + -90.136002, 0.000000, 175.169006, + -97.838997, 10.000000, 184.664993, + -97.838997, 0.000000, 184.664993, + -98.848999, 10.000000, 185.910995, + -98.848999, 0.000000, 185.910995, + -96.188004, 10.000000, 188.048996, + -96.188004, 0.000000, 188.048996, + -97.598999, 10.000000, 189.908005, + -97.598999, 0.000000, 189.908005, + -93.365997, 10.000000, 193.246994, + -93.365997, 0.000000, 193.246994, + -83.369003, 10.000000, 180.223007, + -83.369003, 0.000000, 180.223007, + -111.842003, 10.000000, 182.938995, + -111.842003, 0.000000, 182.938995, + -116.035004, 10.000000, 179.166000, + -116.035004, 0.000000, 179.166000, + -127.764000, 10.000000, 181.524994, + -127.764000, 0.000000, 181.524994, + -67.626999, 10.000000, 191.376999, + -67.626999, 0.000000, 191.376999, + -67.713997, 10.000000, 191.498993, + -67.713997, 0.000000, 191.498993, + -68.209000, 10.000000, 191.164993, + -68.209000, 0.000000, 191.164993, + -68.542999, 10.000000, 191.643997, + -68.542999, 0.000000, 191.643997, + -71.016998, 10.000000, 189.873993, + -71.016998, 0.000000, 189.873993, + -70.737000, 10.000000, 189.462006, + -70.737000, 0.000000, 189.462006, + -71.980003, 10.000000, 188.593994, + -71.980003, 0.000000, 188.593994, + -72.267998, 10.000000, 189.005997, + -72.267998, 0.000000, 189.005997, + -74.795998, 10.000000, 187.235992, + -74.795998, 0.000000, 187.235992, + -74.514999, 10.000000, 186.824005, + -74.514999, 0.000000, 186.824005, + -75.764999, 10.000000, 185.955994, + -75.764999, 0.000000, 185.955994, + -76.053001, 10.000000, 186.367996, + -76.053001, 0.000000, 186.367996, + -78.573997, 10.000000, 184.664993, + -78.573997, 0.000000, 184.664993, + -78.233002, 10.000000, 184.175003, + -78.233002, 0.000000, 184.175003, + -78.727997, 10.000000, 183.830002, + -78.727997, 0.000000, 183.830002, + -78.634003, 10.000000, 183.695999, + -78.634003, 0.000000, 183.695999, + -83.382004, 10.000000, 180.279007, + -83.382004, 0.000000, 180.279007, + -83.455002, 10.000000, 180.378998, + -83.455002, 0.000000, 180.378998, + -92.871002, 10.000000, 192.690002, + -92.871002, 0.000000, 192.690002, + -93.057999, 10.000000, 192.934998, + -93.057999, 0.000000, 192.934998, + -95.332001, 10.000000, 195.906998, + -95.332001, 0.000000, 195.906998, + -95.151001, 10.000000, 196.052002, + -95.151001, 0.000000, 196.052002, + -99.110001, 10.000000, 201.216995, + -99.110001, 0.000000, 201.216995, + -99.530998, 10.000000, 201.639999, + -99.530998, 0.000000, 201.639999, + -107.127998, 10.000000, 209.210007, + -107.127998, 0.000000, 209.210007, + -107.355003, 10.000000, 209.432007, + -107.355003, 0.000000, 209.432007, + -101.931999, 10.000000, 216.199997, + -101.931999, 0.000000, 216.199997, + -101.551003, 10.000000, 215.865997, + -101.551003, 0.000000, 215.865997, + -99.652000, 10.000000, 218.237000, + -99.652000, 0.000000, 218.237000, + -100.039001, 10.000000, 218.570999, + -100.039001, 0.000000, 218.570999, + -98.749001, 10.000000, 220.162994, + -98.749001, 0.000000, 220.162994, + -98.367996, 10.000000, 219.839996, + -98.367996, 0.000000, 219.839996, + -96.461998, 10.000000, 222.210999, + -96.461998, 0.000000, 222.210999, + -96.862999, 10.000000, 222.533997, + -96.862999, 0.000000, 222.533997, + -94.682999, 10.000000, 225.250000, + -94.682999, 0.000000, 225.250000, + -94.000999, 10.000000, 224.692993, + -94.000999, 0.000000, 224.692993, + -91.848000, 10.000000, 227.354004, + -91.848000, 0.000000, 227.354004, + -92.416000, 10.000000, 227.843994, + -92.416000, 0.000000, 227.843994, + -91.152000, 10.000000, 229.423996, + -91.152000, 0.000000, 229.423996, + -90.570999, 10.000000, 228.945999, + -90.570999, 0.000000, 228.945999, + -88.436996, 10.000000, 231.628006, + -88.436996, 0.000000, 231.628006, + -89.133003, 10.000000, 232.184998, + -89.133003, 0.000000, 232.184998, + -87.627998, 10.000000, 234.033005, + -87.627998, 0.000000, 234.033005, + -86.873001, 10.000000, 233.442993, + -86.873001, 0.000000, 233.442993, + -85.668999, 10.000000, 234.945007, + -85.668999, 0.000000, 234.945007, + -77.403999, 10.000000, 225.962006, + -77.403999, 0.000000, 225.962006, + -80.171997, 10.000000, 222.612000, + -80.171997, 0.000000, 222.612000, + -78.306000, 10.000000, 219.962997, + -78.306000, 0.000000, 219.962997, + -78.198997, 10.000000, 219.796005, + -78.198997, 0.000000, 219.796005, + -78.112000, 10.000000, 219.617004, + -78.112000, 0.000000, 219.617004, + -78.045998, 10.000000, 219.417007, + -78.045998, 0.000000, 219.417007, + -78.012001, 10.000000, 219.216995, + -78.012001, 0.000000, 219.216995, + -77.985001, 10.000000, 218.893997, + -77.985001, 0.000000, 218.893997, + -73.919998, 10.000000, 221.798996, + -73.919998, 0.000000, 221.798996, + -73.485001, 10.000000, 221.253998, + -73.485001, 0.000000, 221.253998, + -71.680000, 10.000000, 219.016006, + -71.680000, 0.000000, 219.016006, + -71.572998, 10.000000, 219.104996, + -71.572998, 0.000000, 219.104996, + -69.386002, 10.000000, 216.746002, + -69.386002, 0.000000, 216.746002, + -74.007004, 10.000000, 213.617996, + -74.007004, 0.000000, 213.617996, + -74.053001, 10.000000, 213.584000, + -74.053001, 0.000000, 213.584000, + -75.217003, 10.000000, 212.804993, + -75.217003, 0.000000, 212.804993, + -74.046997, 10.000000, 211.067993, + -74.046997, 0.000000, 211.067993, + -73.987000, 10.000000, 211.113007, + -73.987000, 0.000000, 211.113007, + -72.415001, 10.000000, 208.820007, + -72.415001, 0.000000, 208.820007, + -62.826000, 10.000000, 194.794006, + -62.826000, 0.000000, 194.794006, + -62.778999, 10.000000, 194.716003, + -62.778999, 0.000000, 194.716003, + -64.290001, 10.000000, 193.669998, + -64.290001, 0.000000, 193.669998, + 85.139000, 15.000000, 179.565994, + 85.139000, 0.000000, 179.565994, + 95.705002, 15.000000, 167.210007, + 95.705002, 0.000000, 167.210007, + 83.018997, 15.000000, 154.710007, + 83.018997, 0.000000, 154.710007, + 61.186001, 15.000000, 183.785004, + 61.186001, 0.000000, 183.785004, + 72.507004, 15.000000, 191.988998, + 72.507004, 0.000000, 191.988998, + 76.232002, 15.000000, 186.279007, + 76.232002, 0.000000, 186.279007, + 76.834000, 15.000000, 186.723999, + 76.834000, 0.000000, 186.723999, + 79.943001, 15.000000, 182.171005, + 79.943001, 0.000000, 182.171005, + 78.827003, 15.000000, 181.335999, + 78.827003, 0.000000, 181.335999, + 82.283997, 15.000000, 176.628006, + 82.283997, 0.000000, 176.628006, + 99.677002, 7.300000, 171.440002, + 99.677002, 0.000000, 171.440002, + 88.167999, 7.300000, 187.358002, + 88.167999, 0.000000, 187.358002, + 92.962997, 7.300000, 192.089005, + 92.962997, 0.000000, 192.089005, + 103.943001, 7.300000, 175.981995, + 103.943001, 0.000000, 175.981995, + 103.943001, 15.000000, 175.981995, + 92.962997, 15.000000, 192.089005, + 99.456001, 15.000000, 198.667999, + 99.456001, 0.000000, 198.667999, + 101.549004, 15.000000, 195.873993, + 101.549004, 0.000000, 195.873993, + 110.704002, 15.000000, 183.195007, + 110.704002, 0.000000, 183.195007, + 56.532001, 7.500000, 189.205994, + 56.532001, 0.000000, 189.205994, + 72.600998, 7.500000, 199.492004, + 72.600998, 0.000000, 199.492004, + 75.430000, 7.500000, 194.070999, + 75.430000, 0.000000, 194.070999, + 72.507004, 7.500000, 191.988998, + 61.186001, 7.500000, 183.785004, + 60.598000, 7.500000, 183.350998, + 60.598000, 0.000000, 183.350998, + 84.142998, 15.000000, 219.093994, + 84.142998, 0.000000, 219.093994, + 83.547997, 15.000000, 219.873001, + 83.547997, 0.000000, 219.873001, + 112.135002, 15.000000, 232.608002, + 112.135002, 0.000000, 232.608002, + 114.695999, 15.000000, 234.289001, + 114.695999, 0.000000, 234.289001, + 135.968002, 15.000000, 208.585999, + 135.968002, 0.000000, 208.585999, + 139.009995, 5.000000, 78.278999, + 139.009995, 0.000000, 78.278999, + 149.115005, 5.000000, 87.330002, + 149.115005, 0.000000, 87.330002, + 148.973999, 5.000000, 92.361000, + 148.973999, 0.000000, 92.361000, + 139.345001, 5.000000, 103.893997, + 139.345001, 0.000000, 103.893997, + 181.024994, 5.000000, 138.289993, + 181.024994, 0.000000, 138.289993, + 186.703003, 5.000000, 142.988007, + 186.703003, 0.000000, 142.988007, + 188.962997, 5.000000, 144.847000, + 188.962997, 0.000000, 144.847000, + 201.326996, 5.000000, 130.408997, + 201.326996, 0.000000, 130.408997, + 209.987000, 5.000000, 120.212997, + 209.987000, 0.000000, 120.212997, + 197.542007, 5.000000, 109.638000, + 197.542007, 0.000000, 109.638000, + 219.723007, 5.000000, 83.300003, + 219.723007, 0.000000, 83.300003, + 231.485992, 5.000000, 45.185001, + 231.485992, 0.000000, 45.185001, + 185.459000, 5.000000, 30.000999, + 185.459000, 0.000000, 30.000999, + 162.957001, 5.000000, 50.472000, + 162.957001, 0.000000, 50.472000, + 143.738007, 5.000000, 67.959999, + 143.738007, 0.000000, 67.959999, + 179.259995, 25.700001, 125.945000, + 179.259995, 0.000000, 125.945000, + 174.639008, 25.700001, 131.143997, + 174.639008, 0.000000, 131.143997, + 177.916000, 25.700001, 134.059998, + 177.916000, 0.000000, 134.059998, + 182.537003, 25.700001, 128.873001, + 182.537003, 0.000000, 128.873001, + 149.455994, 25.700001, 65.634003, + 149.455994, 0.000000, 65.634003, + 151.602005, 25.700001, 67.971001, + 151.602005, 0.000000, 67.971001, + 157.514008, 25.700001, 62.584000, + 157.514008, 0.000000, 62.584000, + 160.563004, 25.700001, 65.922997, + 160.563004, 0.000000, 65.922997, + 170.386002, 25.700001, 56.962002, + 170.386002, 0.000000, 56.962002, + 167.110001, 25.700001, 53.377998, + 167.110001, 0.000000, 53.377998, + 158.610001, 25.700001, 61.125000, + 158.610001, 0.000000, 61.125000, + 156.690994, 25.700001, 59.033001, + 156.690994, 0.000000, 59.033001, + 149.783005, 25.700001, 109.503998, + 149.783005, 0.000000, 109.503998, + 157.487000, 25.700001, 116.027000, + 157.487000, 0.000000, 116.027000, + 159.699997, 25.700001, 113.411003, + 159.699997, 0.000000, 113.411003, + 152.003006, 25.700001, 106.888000, + 152.003006, 0.000000, 106.888000, + 134.770996, 25.700001, 91.047997, + 134.770996, 0.000000, 91.047997, + 134.436005, 25.700001, 92.750999, + 134.436005, 0.000000, 92.750999, + 135.057999, 25.700001, 92.940002, + 135.057999, 0.000000, 92.940002, + 135.393005, 25.700001, 95.010002, + 135.393005, 0.000000, 95.010002, + 138.669006, 25.700001, 96.580002, + 138.669006, 0.000000, 96.580002, + 142.988998, 25.700001, 92.584000, + 142.988998, 0.000000, 92.584000, + 142.761993, 25.700001, 90.179001, + 142.761993, 0.000000, 90.179001, + 143.190002, 25.700001, 89.901001, + 143.190002, 0.000000, 89.901001, + 142.794998, 25.700001, 86.706001, + 142.794998, 0.000000, 86.706001, + 139.632004, 25.700001, 85.526001, + 139.632004, 0.000000, 85.526001, + 137.339005, 25.700001, 87.061996, + 137.339005, 0.000000, 87.061996, + 137.445999, 25.700001, 87.462997, + 137.445999, 0.000000, 87.462997, + 135.787003, 25.700001, 88.844002, + 135.787003, 0.000000, 88.844002, + 134.436005, 25.700001, 88.276001, + 134.436005, 0.000000, 88.276001, + 132.095993, 25.700001, 87.274002, + 132.095993, 0.000000, 87.274002, + 131.145996, 25.700001, 89.511002, + 131.145996, 0.000000, 89.511002, + 133.447006, 25.700001, 90.490997, + 133.447006, 0.000000, 90.490997, + 219.423004, 31.700001, 109.102997, + 219.423004, 5.000000, 109.102997, + 194.766998, 31.700001, 88.164001, + 194.766998, 5.000000, 88.164001, + 176.671997, 31.700001, 109.459000, + 176.671997, 5.000000, 109.459000, + 201.326996, 31.700001, 130.408997, + 209.987000, 31.700001, 120.212997, + 203.688004, 7.500000, 157.003006, + 203.688004, 0.000000, 157.003006, + 206.791000, 7.500000, 152.951004, + 206.791000, 0.000000, 152.951004, + 210.983002, 7.500000, 147.462997, + 210.983002, 0.000000, 147.462997, + 216.820999, 7.500000, 139.837997, + 216.820999, 0.000000, 139.837997, + 217.350006, 7.500000, 139.147995, + 217.350006, 0.000000, 139.147995, + 230.529999, 7.500000, 121.916000, + 230.529999, 0.000000, 121.916000, + 232.602997, 7.500000, 119.154999, + 232.602997, 0.000000, 119.154999, + 223.789001, 7.500000, 111.418999, + 223.789001, 0.000000, 111.418999, + 234.589005, 7.500000, 99.107002, + 234.589005, 0.000000, 99.107002, + 239.289993, 7.500000, 93.752998, + 239.289993, 0.000000, 93.752998, + 249.274002, 7.500000, 85.927002, + 249.274002, 0.000000, 85.927002, + 245.863007, 7.500000, 81.573997, + 245.863007, 0.000000, 81.573997, + 238.360001, 7.500000, 78.668999, + 238.360001, 0.000000, 78.668999, + 240.927994, 7.500000, 71.845001, + 240.927994, 0.000000, 71.845001, + 248.089996, 7.500000, 52.787998, + 248.089996, 0.000000, 52.787998, + 248.819000, 7.500000, 50.905998, + 248.819000, 0.000000, 50.905998, + 239.511002, 7.500000, 47.834000, + 239.511002, 0.000000, 47.834000, + 231.485992, 7.500000, 45.185001, + 219.723007, 7.500000, 83.300003, + 206.928619, 7.500000, 98.492203, + 206.928619, 0.000000, 98.492203, + 219.423004, 7.500000, 109.102997, + 219.423004, 0.000000, 109.102997, + 209.987000, 7.500000, 120.212997, + 201.326996, 7.500000, 130.408997, + 188.962997, 7.500000, 144.847000, + 197.007004, 7.500000, 151.492996, + 197.007004, 0.000000, 151.492996, + 198.966995, 7.500000, 153.106995, + 198.966995, 0.000000, 153.106995, + 139.345001, 7.500000, 103.893997, + 148.973999, 7.500000, 92.361000, + 149.115005, 7.500000, 87.330002, + 139.009995, 7.500000, 78.278999, + 135.332001, 7.500000, 86.317001, + 135.332001, 0.000000, 86.317001, + 134.436005, 7.500000, 88.276001, + 135.787003, 7.500000, 88.844002, + 137.445999, 7.500000, 87.462997, + 137.339005, 7.500000, 87.061996, + 139.632004, 7.500000, 85.526001, + 142.794998, 7.500000, 86.706001, + 143.190002, 7.500000, 89.901001, + 142.761993, 7.500000, 90.179001, + 142.988998, 7.500000, 92.584000, + 138.669006, 7.500000, 96.580002, + 135.393005, 7.500000, 95.010002, + 135.057999, 7.500000, 92.940002, + 134.436005, 7.500000, 92.750999, + 134.770996, 7.500000, 91.047997, + 133.447006, 7.500000, 90.490997, + 130.658005, 7.500000, 96.747002, + 130.658005, 0.000000, 96.747002, + 133.514008, 7.500000, 99.096001, + 133.514008, 0.000000, 99.096001, + 135.298996, 7.500000, 100.554001, + 135.298996, 0.000000, 100.554001, + 114.421997, 21.299999, 118.820999, + 114.421997, 0.000000, 118.820999, + 120.058998, 21.299999, 124.231003, + 120.058998, 0.000000, 124.231003, + 121.616997, 21.299999, 125.790001, + 121.616997, 0.000000, 125.790001, + 124.378998, 21.299999, 128.572998, + 124.378998, 0.000000, 128.572998, + 125.275002, 21.299999, 127.625999, + 125.275002, 0.000000, 127.625999, + 132.089005, 21.299999, 120.490997, + 132.089005, 0.000000, 120.490997, + 127.615997, 21.299999, 116.349998, + 127.615997, 0.000000, 116.349998, + 126.332001, 21.299999, 115.158997, + 126.332001, 0.000000, 115.158997, + 124.686996, 21.299999, 113.634003, + 124.686996, 0.000000, 113.634003, + 121.917999, 21.299999, 111.061996, + 121.917999, 0.000000, 111.061996, + 156.423996, 20.000000, 174.044998, + 156.423996, 0.000000, 174.044998, + 134.229004, 20.000000, 156.914001, + 134.229004, 0.000000, 156.914001, + 121.042000, 20.000000, 172.419998, + 121.042000, 0.000000, 172.419998, + 136.294998, 20.000000, 187.970993, + 136.294998, 0.000000, 187.970993, + 141.979004, 20.000000, 193.770004, + 141.979004, 0.000000, 193.770004, + 125.275002, 20.000000, 127.625999, + 133.968002, 20.000000, 135.774994, + 133.968002, 0.000000, 135.774994, + 135.893997, 20.000000, 137.578003, + 135.893997, 0.000000, 137.578003, + 144.205994, 20.000000, 145.192001, + 144.205994, 0.000000, 145.192001, + 150.753006, 20.000000, 137.556000, + 150.753006, 0.000000, 137.556000, + 142.654999, 20.000000, 130.153000, + 142.654999, 0.000000, 130.153000, + 132.089005, 20.000000, 120.490997, + 161.526001, 20.000000, 167.076996, + 161.526001, 0.000000, 167.076996, + 171.362000, 20.000000, 153.507004, + 171.362000, 0.000000, 153.507004, + 164.962997, 20.000000, 148.554001, + 164.962997, 0.000000, 148.554001, + 141.992996, 20.000000, 147.796997, + 141.992996, 0.000000, 147.796997, + 136.195007, 20.000000, 154.598007, + 136.195007, 0.000000, 154.598007, + 147.910995, 20.000000, 198.824005, + 147.910995, 0.000000, 198.824005, + 153.233994, 20.000000, 203.509995, + 153.233994, 0.000000, 203.509995, + 164.408005, 20.000000, 187.136002, + 164.408005, 0.000000, 187.136002, + 164.802002, 20.000000, 186.567993, + 164.802002, 0.000000, 186.567993, + 180.591003, 20.000000, 160.843002, + 180.591003, 0.000000, 160.843002, + 175.388000, 20.000000, 156.712997, + 175.388000, 0.000000, 156.712997, + 166.695007, 20.000000, 170.561005, + 166.695007, 0.000000, 170.561005, + 158.970993, 20.000000, 182.895004, + 158.970993, 0.000000, 182.895004, + 173.207993, 20.000000, 154.977005, + 173.207993, 0.000000, 154.977005, + 115.852997, 7.500000, 141.328995, + 115.852997, 0.000000, 141.328995, + 119.150002, 7.500000, 138.167999, + 119.150002, 0.000000, 138.167999, + 118.126999, 7.500000, 137.009995, + 118.126999, 0.000000, 137.009995, + 122.907997, 7.500000, 132.412994, + 122.907997, 0.000000, 132.412994, + 122.166000, 7.500000, 131.432999, + 122.166000, 0.000000, 131.432999, + 124.378998, 7.500000, 128.572998, + 121.616997, 7.500000, 125.790001, + 120.058998, 7.500000, 124.231003, + 116.555000, 7.500000, 128.317001, + 116.555000, 0.000000, 128.317001, + 117.344002, 7.500000, 129.018005, + 117.344002, 0.000000, 129.018005, + 113.887001, 7.500000, 131.712006, + 113.887001, 0.000000, 131.712006, + 108.102997, 7.500000, 136.542999, + 108.102997, 0.000000, 136.542999, + 98.513000, 7.500000, 146.037994, + 98.513000, 0.000000, 146.037994, + 98.774002, 7.500000, 146.261002, + 98.774002, 0.000000, 146.261002, + 97.824997, 7.500000, 147.541000, + 97.824997, 0.000000, 147.541000, + 103.334999, 7.500000, 153.496002, + 103.334999, 0.000000, 153.496002, + 111.459999, 21.299999, 129.317993, + 111.459999, 0.000000, 129.317993, + 107.781998, 21.299999, 125.689003, + 107.781998, 0.000000, 125.689003, + 91.967003, 21.299999, 141.819000, + 91.967003, 0.000000, 141.819000, + 97.824997, 21.299999, 147.541000, + 98.774002, 21.299999, 146.261002, + 98.513000, 21.299999, 146.037994, + 108.102997, 21.299999, 136.542999, + 113.887001, 21.299999, 131.712006, + 175.007004, 10.000000, -8.582000, + 175.007004, 0.000000, -8.582000, + 172.371994, 10.000000, -10.542000, + 172.371994, 0.000000, -10.542000, + 174.438995, 10.000000, -13.325000, + 174.438995, 0.000000, -13.325000, + 176.906006, 10.000000, -11.488000, + 176.906006, 0.000000, -11.488000, + 183.145004, 10.000000, -21.073000, + 183.145004, 0.000000, -21.073000, + 179.179993, 10.000000, -22.097000, + 179.179993, 0.000000, -22.097000, + 177.274002, 10.000000, -22.587000, + 177.274002, 0.000000, -22.587000, + 164.990005, 10.000000, -3.863000, + 164.990005, 0.000000, -3.863000, + 167.016006, 10.000000, -2.159000, + 167.016006, 0.000000, -2.159000, + 169.477005, 10.000000, -0.089000, + 169.477005, 0.000000, -0.089000, + 174.171005, 10.000000, -23.377001, + 174.171005, 0.000000, -23.377001, + 169.537003, 10.000000, -16.464001, + 169.537003, 0.000000, -16.464001, + 167.817993, 10.000000, -13.503000, + 167.817993, 0.000000, -13.503000, + 162.268005, 10.000000, -6.156000, + 162.268005, 0.000000, -6.156000, + 171.589996, 10.000000, 1.681000, + 171.589996, 0.000000, 1.681000, + 173.917007, 10.000000, 3.652000, + 173.917007, 0.000000, 3.652000, + 187.686005, 10.000000, -19.903999, + 187.686005, 0.000000, -19.903999, + 184.817001, 10.000000, -20.650000, + 184.817001, 0.000000, -20.650000, + 178.884995, 10.000000, -10.019000, + 178.884995, 0.000000, -10.019000, + 176.819000, 10.000000, -7.236000, + 176.819000, 0.000000, -7.236000, + 176.524994, 10.000000, 5.833000, + 176.524994, 0.000000, 5.833000, + 179.199997, 10.000000, 8.093000, + 179.199997, 0.000000, 8.093000, + 184.242004, 10.000000, -2.115000, + 184.242004, 0.000000, -2.115000, + 181.813995, 10.000000, -3.740000, + 181.813995, 0.000000, -3.740000, + 185.091003, 10.000000, -9.006000, + 185.091003, 0.000000, -9.006000, + 187.057007, 10.000000, -7.826000, + 187.057007, 0.000000, -7.826000, + 192.427002, 10.000000, -18.690001, + 192.427002, 0.000000, -18.690001, + 189.431000, 10.000000, -19.458000, + 189.431000, 0.000000, -19.458000, + 158.776993, 10.000000, -62.071999, + 158.776993, 0.000000, -62.071999, + 152.684998, 10.000000, -42.445999, + 152.684998, 0.000000, -42.445999, + 159.132004, 10.000000, -46.242001, + 159.132004, 0.000000, -46.242001, + 164.100006, 10.000000, -45.084000, + 164.100006, 0.000000, -45.084000, + 155.548004, 10.000000, -36.958000, + 155.548004, 0.000000, -36.958000, + 164.554993, 10.000000, -34.442001, + 164.554993, 0.000000, -34.442001, + 172.065002, 10.000000, -42.825001, + 172.065002, 0.000000, -42.825001, + 191.584000, 10.000000, -37.192001, + 191.584000, 0.000000, -37.192001, + 183.371994, 10.000000, -29.021000, + 183.371994, 0.000000, -29.021000, + 188.654999, 10.000000, -27.596001, + 188.654999, 0.000000, -27.596001, + 192.253006, 10.000000, -26.627001, + 192.253006, 0.000000, -26.627001, + 199.796005, 10.000000, -34.609001, + 199.796005, 0.000000, -34.609001, + 206.710007, 10.000000, -32.672001, + 206.710007, 0.000000, -32.672001, + 215.470001, 10.000000, -19.903999, + 215.470001, 0.000000, -19.903999, + 218.587006, 10.000000, -18.846001, + 218.587006, 0.000000, -18.846001, + 220.854004, 10.000000, -25.903999, + 220.854004, 0.000000, -25.903999, + 226.182999, 10.000000, -41.789001, + 226.182999, 0.000000, -41.789001, + 215.470001, 4.000000, -19.903999, + 206.710007, 4.000000, -32.672001, + 199.796005, 4.000000, -34.609001, + 192.253006, 4.000000, -26.627001, + 183.371994, 4.000000, -29.021000, + 191.584000, 4.000000, -37.192001, + 172.065002, 4.000000, -42.825001, + 164.554993, 4.000000, -34.442001, + 155.548004, 4.000000, -36.958000, + 164.100006, 4.000000, -45.084000, + 159.132004, 4.000000, -46.242001, + 152.684998, 4.000000, -42.445999, + 151.522003, 4.000000, -38.227001, + 151.522003, 0.000000, -38.227001, + 153.701996, 4.000000, -37.536999, + 153.701996, 0.000000, -37.536999, + 187.117004, 10.000000, 4.019000, + 187.117004, 0.000000, 4.019000, + 185.766006, 10.000000, 3.329000, + 185.766006, 0.000000, 3.329000, + 187.759003, 10.000000, -0.567000, + 187.759003, 0.000000, -0.567000, + 189.076996, 10.000000, 0.112000, + 189.076996, 0.000000, 0.112000, + 190.681000, 10.000000, -3.306000, + 190.681000, 0.000000, -3.306000, + 189.684998, 10.000000, -3.751000, + 189.684998, 0.000000, -3.751000, + 191.404007, 10.000000, -7.569000, + 191.404007, 0.000000, -7.569000, + 192.487000, 10.000000, -7.080000, + 192.487000, 0.000000, -7.080000, + 197.481995, 10.000000, -17.388000, + 197.481995, 0.000000, -17.388000, + 195.035004, 10.000000, -18.011000, + 195.035004, 0.000000, -18.011000, + 181.828003, 10.000000, 9.874000, + 181.828003, 0.000000, 9.874000, + 183.660004, 10.000000, 11.121000, + 183.660004, 0.000000, 11.121000, + 188.587997, 10.000000, 1.069000, + 188.587997, 0.000000, 1.069000, + 189.557999, 10.000000, 1.559000, + 189.557999, 0.000000, 1.559000, + 188.052994, 10.000000, 4.498000, + 188.052994, 0.000000, 4.498000, + 187.270996, 10.000000, 13.570000, + 187.270996, 0.000000, 13.570000, + 188.173996, 10.000000, 11.733000, + 188.173996, 0.000000, 11.733000, + 191.464005, 10.000000, 12.980000, + 191.464005, 0.000000, 12.980000, + 196.707001, 10.000000, 14.962000, + 196.707001, 0.000000, 14.962000, + 208.227997, 10.000000, -13.592000, + 208.227997, 0.000000, -13.592000, + 203.440002, 10.000000, -15.284000, + 203.440002, 0.000000, -15.284000, + 193.757996, 10.000000, -6.512000, + 193.757996, 0.000000, -6.512000, + 192.500000, 10.000000, -3.718000, + 192.500000, 0.000000, -3.718000, + 191.143005, 10.000000, -4.330000, + 191.143005, 0.000000, -4.330000, + 84.931999, 23.600000, -60.869999, + 84.931999, 0.000000, -60.869999, + 89.839996, 23.600000, -81.052002, + 89.839996, 0.000000, -81.052002, + 74.834000, 23.600000, -83.579002, + 74.834000, 0.000000, -83.579002, + 70.380997, 23.600000, -64.431999, + 70.380997, 0.000000, -64.431999, + 144.580994, 10.000000, -50.627998, + 144.580994, 0.000000, -50.627998, + 148.966995, 10.000000, -65.055000, + 148.966995, 0.000000, -65.055000, + 135.653000, 10.000000, -69.107002, + 135.653000, 0.000000, -69.107002, + 131.574005, 10.000000, -54.390999, + 131.574005, 0.000000, -54.390999, + 142.541000, 10.000000, -51.217999, + 142.541000, 0.000000, -51.217999, + 122.373001, 23.600000, -73.137001, + 122.373001, 0.000000, -73.137001, + 117.323997, 23.600000, -52.387001, + 117.323997, 0.000000, -52.387001, + 129.701996, 23.600000, -47.344002, + 129.701996, 0.000000, -47.344002, + 131.574005, 23.600000, -54.390999, + 135.653000, 23.600000, -69.107002, + 84.792000, 23.600000, -60.313000, + 84.792000, 0.000000, -60.313000, + 157.473007, 10.000000, -27.930000, + 157.473007, 0.000000, -27.930000, + 149.776993, 10.000000, -30.134001, + 149.776993, 0.000000, -30.134001, + 146.947998, 10.000000, -30.947001, + 146.947998, 0.000000, -30.947001, + 145.302994, 10.000000, -28.141001, + 145.302994, 0.000000, -28.141001, + 141.865997, 10.000000, -24.312000, + 141.865997, 0.000000, -24.312000, + 141.505005, 10.000000, -41.321999, + 141.505005, 0.000000, -41.321999, + 143.798004, 10.000000, -40.609001, + 143.798004, 0.000000, -40.609001, + 151.522003, 10.000000, -38.227001, + 156.998993, 10.000000, -62.605999, + 156.998993, 0.000000, -62.605999, + -76.514000, 7.500000, -137.537003, + -76.514000, 0.000000, -137.537003, + -86.498001, 7.500000, -143.248001, + -86.498001, 0.000000, -143.248001, + -94.502998, 7.500000, -130.656998, + -94.502998, 0.000000, -130.656998, + -87.040001, 7.500000, -125.759003, + -87.040001, 0.000000, -125.759003, + -89.902000, 7.500000, -120.816002, + -89.902000, 0.000000, -120.816002, + -84.685997, 7.500000, -116.998001, + -84.685997, 0.000000, -116.998001, + -70.917000, 7.500000, -110.362999, + -70.917000, 0.000000, -110.362999, + -70.014000, 7.500000, -109.929001, + -70.014000, 0.000000, -109.929001, + -64.851997, 7.500000, -121.750999, + -64.851997, 0.000000, -121.750999, + -79.268997, 7.500000, -127.561996, + -79.268997, 0.000000, -127.561996, + -78.921997, 7.500000, -128.285995, + -78.921997, 0.000000, -128.285995, + -81.369003, 7.500000, -129.856003, + -81.369003, 0.000000, -129.856003, + -111.099998, 7.500000, -167.884003, + -111.099998, 0.000000, -167.884003, + -124.320000, 7.500000, -178.826996, + -124.320000, 0.000000, -178.826996, + -135.279999, 7.500000, -164.899994, + -135.279999, 0.000000, -164.899994, + -121.196999, 7.500000, -154.001999, + -121.196999, 0.000000, -154.001999, + -75.277000, 7.500000, -165.656998, + -75.277000, 0.000000, -165.656998, + -99.657997, 7.500000, -179.406006, + -99.657997, 0.000000, -179.406006, + -108.491997, 7.500000, -165.957993, + -108.491997, 0.000000, -165.957993, + -82.620003, 7.500000, -151.718994, + -82.620003, 0.000000, -151.718994, + -51.898998, 7.500000, -152.488007, + -51.898998, 0.000000, -152.488007, + -58.411999, 7.500000, -141.087997, + -58.411999, 0.000000, -141.087997, + -48.862999, 7.500000, -135.733994, + -48.862999, 0.000000, -135.733994, + -40.931999, 7.500000, -130.869003, + -34.405998, 7.500000, -142.623993, + -115.634003, 7.500000, -189.826004, + -115.634003, 0.000000, -189.826004, + -91.721001, 7.500000, -116.775002, + -91.721001, 0.000000, -116.775002, + -92.836998, 7.500000, -112.623001, + -92.836998, 0.000000, -112.623001, + -82.264999, 7.500000, -151.552994, + -82.264999, 0.000000, -151.552994, + -86.939003, 7.500000, -143.537003, + -86.939003, 0.000000, -143.537003, + -70.703003, 7.500000, -147.434006, + -70.703003, 0.000000, -147.434006, + -115.580002, 7.500000, -113.580002, + -115.580002, 0.000000, -113.580002, + -115.527000, 7.500000, -110.852997, + -115.527000, 0.000000, -110.852997, + -115.259003, 7.500000, -96.625999, + -115.259003, 0.000000, -96.625999, + -105.830002, 7.500000, -96.804001, + -105.830002, 0.000000, -96.804001, + -106.105003, 7.500000, -111.053001, + -106.105003, 0.000000, -111.053001, + -106.151001, 7.500000, -113.758003, + -106.151001, 0.000000, -113.758003, + -123.711998, 7.500000, -110.685997, + -123.711998, 0.000000, -110.685997, + -123.444000, 7.500000, -96.470001, + -123.444000, 0.000000, -96.470001, + -123.764999, 7.500000, -113.425003, + -123.764999, 0.000000, -113.425003, + -137.520996, 7.500000, -110.407997, + -137.520996, 0.000000, -110.407997, + -148.889008, 7.500000, -104.819000, + -148.889008, 0.000000, -104.819000, + -145.839005, 7.500000, -96.213997, + -145.839005, 0.000000, -96.213997, + -135.548004, 7.500000, -113.525002, + -135.548004, 0.000000, -113.525002, + -134.692001, 7.500000, -111.865997, + -134.692001, 0.000000, -111.865997, + -144.248001, 7.500000, -130.311996, + -144.248001, 0.000000, -130.311996, + -146.667999, 7.500000, -128.431000, + -146.667999, 0.000000, -128.431000, + -151.582993, 7.500000, -125.191002, + -151.582993, 0.000000, -125.191002, + -158.423996, 7.500000, -120.682999, + -158.423996, 0.000000, -120.682999, + -156.591995, 7.500000, -117.109001, + -156.591995, 0.000000, -117.109001, + -155.561996, 7.500000, -117.487999, + -155.561996, 0.000000, -117.487999, + -129.182007, 7.500000, -149.348007, + -129.182007, 0.000000, -149.348007, + -139.380005, 7.500000, -158.744003, + -139.380005, 0.000000, -158.744003, + -150.580002, 7.500000, -146.598999, + -150.580002, 0.000000, -146.598999, + -140.522995, 7.500000, -137.337006, + -140.522995, 0.000000, -137.337006, + -138.156006, 7.500000, -135.154999, + -138.156006, 0.000000, -135.154999, + -126.961998, 7.500000, -147.300003, + -126.961998, 0.000000, -147.300003, + -159.781998, 7.500000, -136.735001, + -159.781998, 0.000000, -136.735001, + -163.065002, 7.500000, -134.320007, + -163.065002, 0.000000, -134.320007, + -162.503006, 7.500000, -133.440002, + -162.503006, 0.000000, -133.440002, + -160.309998, 7.500000, -130.011993, + -160.309998, 0.000000, -130.011993, + -163.378998, 7.500000, -127.417999, + -163.378998, 0.000000, -127.417999, + -180.345001, 5.000000, -152.910995, + -170.567993, 5.000000, -141.744995, + -170.567993, 0.000000, -141.744995, + -160.363998, 5.000000, -150.039001, + -160.363998, 0.000000, -150.039001, + -154.332001, 5.000000, -156.216995, + -154.332001, 0.000000, -156.216995, + -176.138000, 5.000000, -186.352005, + -176.138000, 0.000000, -186.352005, + -181.514999, 5.000000, -190.983002, + -181.514999, 0.000000, -190.983002, + -189.613007, 5.000000, -180.485001, + -189.613007, 0.000000, -180.485001, + -197.209000, 5.000000, -187.955002, + -197.209000, 0.000000, -187.955002, + -206.317001, 5.000000, -177.257004, + -206.317001, 0.000000, -177.257004, + -194.735001, 5.000000, -167.727997, + 117.344002, 21.299999, 129.018005, + 116.555000, 21.299999, 128.317001, + -79.209000, 15.000000, 76.053001, + -69.198997, 15.000000, 79.771004, + -67.894997, 15.000000, 75.830002, + -67.894997, 0.000000, 75.830002, + -63.555000, 15.000000, 62.738998, + -63.555000, 0.000000, 62.738998, + -173.785004, 7.500000, -123.577003, + -173.785004, 0.000000, -123.577003, + -191.197998, 7.500000, -114.670998, + -191.197998, 0.000000, -114.670998, + -186.462997, 7.500000, -106.667000, + -186.462997, 0.000000, -106.667000, + -184.322998, 7.500000, -108.304001, + -184.322998, 0.000000, -108.304001, + -212.408997, 24.000000, -166.313995, + -212.408997, 0.000000, -166.313995, + -229.421005, 24.000000, -146.087006, + -229.421005, 0.000000, -146.087006, + -222.453003, 24.000000, -138.917007, + -222.453003, 0.000000, -138.917007, + -223.067993, 24.000000, -138.326996, + -223.067993, 0.000000, -138.326996, + -216.649002, 24.000000, -132.104004, + -216.649002, 0.000000, -132.104004, + -217.384003, 24.000000, -131.503006, + -217.384003, 0.000000, -131.503006, + -207.942001, 24.000000, -121.763000, + -207.942001, 0.000000, -121.763000, + -208.464005, 24.000000, -121.238998, + -208.464005, 0.000000, -121.238998, + -206.169998, 24.000000, -118.412003, + -206.169998, 0.000000, -118.412003, + -197.095993, 24.000000, -124.178001, + -197.095993, 0.000000, -124.178001, + -196.119003, 24.000000, -122.931000, + -196.119003, 0.000000, -122.931000, + -185.820999, 24.000000, -128.563995, + -185.820999, 0.000000, -128.563995, + -180.798996, 24.000000, -133.229004, + -180.798996, 0.000000, -133.229004, + -309.058014, 7.500000, -228.121002, + -309.058014, 0.000000, -228.121002, + -317.830994, 7.500000, -213.748993, + -317.830994, 0.000000, -213.748993, + -316.066010, 7.500000, -212.591003, + -316.066010, 0.000000, -212.591003, + -316.975006, 7.500000, -211.255005, + -316.975006, 0.000000, -211.255005, + -317.276001, 7.500000, -211.455994, + -317.276001, 0.000000, -211.455994, + -320.212006, 7.500000, -206.423996, + -320.212006, 0.000000, -206.423996, + -315.898010, 7.500000, -203.695999, + -315.898010, 0.000000, -203.695999, + -316.787994, 7.500000, -202.093002, + -316.787994, 0.000000, -202.093002, + -316.467010, 7.500000, -200.156006, + -316.467010, 0.000000, -200.156006, + -314.200012, 7.500000, -198.776001, + -314.200012, 0.000000, -198.776001, + -312.354004, 7.500000, -199.320999, + -312.354004, 0.000000, -199.320999, + -310.601990, 7.500000, -198.218994, + -310.601990, 0.000000, -198.218994, + -309.645996, 7.500000, -199.977997, + -309.645996, 0.000000, -199.977997, + -289.638000, 7.500000, -188.000000, + -289.638000, 0.000000, -188.000000, + -294.058014, 7.500000, -180.473999, + -294.058014, 0.000000, -180.473999, + -284.261993, 7.500000, -174.985992, + -284.261993, 0.000000, -174.985992, + -283.485992, 7.500000, -174.751999, + -283.485992, 0.000000, -174.751999, + -282.596985, 7.500000, -174.929993, + -282.596985, 0.000000, -174.929993, + -281.881012, 7.500000, -175.498001, + -281.881012, 0.000000, -175.498001, + -281.440002, 7.500000, -176.289001, + -281.440002, 0.000000, -176.289001, + -281.406006, 7.500000, -177.190002, + -281.406006, 0.000000, -177.190002, + -281.634003, 7.500000, -177.936005, + -281.634003, 0.000000, -177.936005, + -282.209015, 7.500000, -178.470001, + -282.209015, 0.000000, -178.470001, + -279.380005, 7.500000, -183.268997, + -279.380005, 0.000000, -183.268997, + -271.135010, 7.500000, -178.660004, + -271.135010, 0.000000, -178.660004, + -274.036987, 7.500000, -173.393997, + -274.036987, 0.000000, -173.393997, + -274.867004, 7.500000, -173.550003, + -274.867004, 0.000000, -173.550003, + -275.716003, 7.500000, -173.350006, + -275.716003, 0.000000, -173.350006, + -276.324005, 7.500000, -172.714996, + -276.324005, 0.000000, -172.714996, + -276.605011, 7.500000, -171.979996, + -276.605011, 0.000000, -171.979996, + -276.592010, 7.500000, -170.990005, + -276.592010, 0.000000, -170.990005, + -276.230988, 7.500000, -170.455002, + -276.230988, 0.000000, -170.455002, + -275.835999, 7.500000, -170.121002, + -275.835999, 0.000000, -170.121002, + -265.778992, 7.500000, -164.031998, + -265.778992, 0.000000, -164.031998, + -256.216003, 7.500000, -180.774994, + -256.216003, 0.000000, -180.774994, + -234.229004, 7.500000, -163.830994, + -234.229004, 0.000000, -163.830994, + -260.615997, 7.500000, -132.460999, + -260.615997, 0.000000, -132.460999, + -262.066986, 7.500000, -133.695999, + -262.066986, 0.000000, -133.695999, + -273.315002, 7.500000, -120.515999, + -273.315002, 0.000000, -120.515999, + -257.205994, 7.500000, -106.766998, + -257.205994, 0.000000, -106.766998, + -245.964996, 7.500000, -119.947998, + -245.964996, 0.000000, -119.947998, + -249.134995, 7.500000, -122.653000, + -249.134995, 0.000000, -122.653000, + -229.421005, 7.500000, -146.087006, + -212.408997, 7.500000, -166.313995, + -223.970993, 7.500000, -176.033005, + -223.970993, 0.000000, -176.033005, + -248.365997, 7.500000, -194.089005, + -248.365997, 0.000000, -194.089005, + -276.089996, 7.500000, -209.975006, + -276.089996, 0.000000, -209.975006, + -308.108002, 7.500000, -228.231995, + -308.108002, 0.000000, -228.231995, + -308.596008, 7.500000, -228.332993, + -308.596008, 0.000000, -228.332993, + 101.602997, 5.000000, 115.482002, + 101.602997, 4.700000, 115.482002, + 96.160004, 5.000000, 110.405998, + 96.160004, 4.700000, 110.405998, + 93.318001, 4.700000, 113.432999, + 98.767998, 4.700000, 118.510002, + 101.602997, 0.000000, 115.482002, + 114.750000, 5.000000, 101.400002, + 114.750000, 0.000000, 101.400002, + 109.306000, 5.000000, 96.313004, + 109.306000, 0.000000, 96.313004, + 96.160004, 0.000000, 110.405998, + -71.324997, 15.000000, 17.767000, + -71.324997, 0.000000, 17.767000, + -78.292999, 15.000000, 7.871000, + -62.993000, 15.000000, 122.361000, + -62.993000, 0.000000, 122.361000, + -53.563999, 15.000000, 113.055000, + -54.146000, 15.000000, 112.498001, + -58.779999, 15.000000, 108.045998, + -58.779999, 0.000000, 108.045998, + -51.537998, 7.500000, 96.469002, + -51.537998, 0.000000, 96.469002, + -50.575001, 7.500000, 92.773003, + -47.578999, 7.500000, 82.698997, + -50.067001, 7.500000, 81.852997, + -50.067001, 0.000000, 81.852997, + -58.779999, 7.500000, 108.045998, + -65.554001, 15.000000, 76.598999, + -65.554001, 0.000000, 76.598999, + -50.067001, 15.000000, 81.852997, + -65.554001, 7.500000, 76.598999, + -67.894997, 7.500000, 75.830002, + -73.905998, 7.500000, 93.508003, + -28.722000, 22.000000, 92.338997, + -22.235001, 22.000000, 78.068001, + -29.025999, 22.000000, 75.285004, + -29.025999, 0.000000, 75.285004, + -35.817001, 22.000000, 72.501999, + -42.283001, 22.000000, 86.683998, + -35.502499, 22.000000, 89.511497, + -35.502499, 0.000000, 89.511497, + -28.722000, 22.002426, 92.338997, + -22.235001, 22.004669, 78.068001, + -29.025999, 26.700001, 75.285004, + -35.817001, 22.008108, 72.501999, + -35.502499, 26.700001, 89.511497, + 130.973007, 21.299999, 150.524002, + 130.973007, 0.000000, 150.524002, + 128.572006, 21.299999, 153.307007, + 128.572006, 0.000000, 153.307007, + 123.696999, 21.299999, 149.311005, + 123.696999, 0.000000, 149.311005, + 115.852997, 21.299999, 141.328995, + 103.334999, 21.299999, 153.496002, + 109.947998, 21.299999, 160.074997, + 109.947998, 0.000000, 160.074997, + 111.105003, 21.299999, 161.222000, + 111.105003, 0.000000, 161.222000, + 121.042000, 21.299999, 172.419998, + 134.229004, 21.299999, 156.914001, + 136.195007, 21.299999, 154.598007, + 124.378998, 20.000000, 128.572998, + 122.166000, 20.000000, 131.432999, + 122.907997, 20.000000, 132.412994, + 118.126999, 20.000000, 137.009995, + 119.150002, 20.000000, 138.167999, + 115.852997, 20.000000, 141.328995, + 123.696999, 20.000000, 149.311005, + 128.572006, 20.000000, 153.307007, + 130.973007, 20.000000, 150.524002, + 99.677002, 6.500000, 171.440002, + 95.705002, 6.500000, 167.210007, + 85.139000, 6.500000, 179.565994, + 83.167000, 6.500000, 182.416000, + 83.167000, 0.000000, 182.416000, + 88.167999, 6.500000, 187.358002, + 188.983002, 20.000000, 201.628998, + 188.983002, 0.000000, 201.628998, + 204.871002, 20.000000, 175.414001, + 204.871002, 0.000000, 175.414001, + 195.770004, 20.000000, 169.537003, + 195.770004, 0.000000, 169.537003, + 195.048004, 20.000000, 170.783997, + 195.048004, 0.000000, 170.783997, + 176.852997, 20.000000, 221.643005, + 176.852997, 0.000000, 221.643005, + 204.871002, 7.500000, 175.414001, + 188.983002, 7.500000, 201.628998, + 176.852997, 7.500000, 221.643005, + 189.216995, 7.500000, 231.716995, + 189.216995, 0.000000, 231.716995, + 188.869003, 7.500000, 231.884003, + 188.869003, 0.000000, 231.884003, + 191.651001, 7.500000, 233.977005, + 191.651001, 0.000000, 233.977005, + 192.173004, 7.500000, 233.276001, + 192.173004, 0.000000, 233.276001, + 214.889008, 7.500000, 253.167007, + 214.889008, 0.000000, 253.167007, + 216.533997, 7.500000, 254.615005, + 216.533997, 0.000000, 254.615005, + 218.399002, 7.500000, 256.239990, + 218.399002, 0.000000, 256.239990, + 220.164993, 7.500000, 257.786987, + 220.164993, 0.000000, 257.786987, + 234.802994, 7.500000, 270.609985, + 234.802994, 0.000000, 270.609985, + 248.076996, 7.500000, 282.243011, + 248.076996, 0.000000, 282.243011, + 258.287994, 7.500000, 268.628998, + 258.287994, 0.000000, 268.628998, + 280.950012, 7.500000, 230.949005, + 280.950012, 0.000000, 230.949005, + 275.941986, 7.500000, 227.153000, + 275.941986, 0.000000, 227.153000, + 232.375000, 7.500000, 194.149002, + 232.375000, 0.000000, 194.149002, + 220.886993, 7.500000, 186.345001, + 220.886993, 0.000000, 186.345001, + 173.656006, 24.000000, -177.580002, + 173.656006, 0.000000, -177.580002, + 181.820999, 24.000000, -183.869995, + 181.820999, 0.000000, -183.869995, + 182.582993, 24.000000, -184.460007, + 182.582993, 0.000000, -184.460007, + 182.121994, 24.000000, -185.050003, + 182.121994, 0.000000, -185.050003, + 173.214996, 24.000000, -196.615997, + 173.214996, 0.000000, -196.615997, + 170.699997, 24.000000, -199.878006, + 170.699997, 0.000000, -199.878006, + 169.878006, 24.000000, -200.947006, + 169.878006, 0.000000, -200.947006, + 160.951004, 24.000000, -194.078003, + 160.951004, 0.000000, -194.078003, + 161.705994, 24.000000, -193.098007, + 161.705994, 0.000000, -193.098007, + 164.013000, 24.000000, -190.104004, + 164.013000, 0.000000, -190.104004, + 173.214996, 7.000000, -196.615997, + 182.121994, 7.000000, -185.050003, + 184.182007, 7.000000, -186.630997, + 184.182007, 0.000000, -186.630997, + 182.917999, 7.000000, -188.278000, + 182.917999, 0.000000, -188.278000, + 175.274002, 7.000000, -198.197006, + 175.274002, 0.000000, -198.197006, + 181.820999, 7.000000, -183.869995, + 173.656006, 7.000000, -177.580002, + 164.013000, 7.000000, -190.104004, + 159.184998, 7.000000, -184.393005, + 159.184998, 0.000000, -184.393005, + 166.100006, 7.000000, -175.376007, + 166.100006, 0.000000, -175.376007, + 167.697998, 7.000000, -174.429001, + 167.697998, 0.000000, -174.429001, + 169.537003, 7.000000, -173.828003, + 169.537003, 0.000000, -173.828003, + 171.416000, 7.000000, -173.794998, + 171.416000, 0.000000, -173.794998, + 173.569000, 7.000000, -174.317993, + 173.569000, 0.000000, -174.317993, + 183.826996, 7.000000, -179.317001, + 183.826996, 0.000000, -179.317001, + -152.479996, 10.000000, 161.610992, + -152.479996, 0.000000, 161.610992, + -146.641998, 10.000000, 165.563004, + -146.641998, 0.000000, 165.563004, + -139.098999, 10.000000, 155.389008, + -139.098999, 0.000000, 155.389008, + -138.009003, 10.000000, 156.223007, + -138.009003, 0.000000, 156.223007, + -137.727997, 10.000000, 155.822998, + -137.727997, 0.000000, 155.822998, + -132.190994, 10.000000, 147.496002, + -132.190994, 0.000000, 147.496002, + -132.190994, 10.000000, 147.485001, + -132.190994, 0.000000, 147.485001, + -131.949997, 10.000000, 147.128998, + -131.949997, 0.000000, 147.128998, + -139.600006, 10.000000, 142.042007, + -139.600006, 0.000000, 142.042007, + -142.375000, 10.000000, 146.371994, + -142.375000, 0.000000, 146.371994, + -146.199997, 10.000000, 152.705994, + -146.199997, 0.000000, 152.705994, + -146.621994, 10.000000, 153.328995, + -146.621994, 0.000000, 153.328995, + -147.423996, 10.000000, 154.464996, + -147.423996, 0.000000, 154.464996, + -124.220001, 7.500000, 152.238007, + -124.220001, 0.000000, 152.238007, + -130.779999, 7.500000, 147.863998, + -130.779999, 0.000000, 147.863998, + -130.906998, 7.500000, 148.063995, + -130.906998, 0.000000, 148.063995, + -130.867004, 7.500000, 148.085999, + -130.867004, 0.000000, 148.085999, + -136.832001, 7.500000, 157.125000, + -136.832001, 0.000000, 157.125000, + -138.009003, 7.500000, 156.223007, + -139.098999, 7.500000, 155.389008, + -146.641998, 7.500000, 165.563004, + -146.514999, 7.500000, 165.641006, + -146.514999, 0.000000, 165.641006, + -146.602005, 7.500000, 165.774002, + -146.602005, 0.000000, 165.774002, + -138.992004, 7.500000, 171.384995, + -138.992004, 0.000000, 171.384995, + -132.477997, 7.500000, 176.182007, + -132.477997, 0.000000, 176.182007, + -118.456001, 7.500000, 158.104996, + -118.456001, 0.000000, 158.104996, + -118.803001, 7.500000, 155.845001, + -118.803001, 0.000000, 155.845001, + 101.963997, 7.500000, -119.926003, + 101.963997, 0.000000, -119.926003, + 102.191002, 7.500000, -120.492996, + 102.191002, 0.000000, -120.492996, + 105.032997, 7.500000, -127.628998, + 105.032997, 0.000000, -127.628998, + 105.266998, 7.500000, -128.218994, + 105.266998, 0.000000, -128.218994, + 104.029999, 7.500000, -128.709000, + 104.029999, 0.000000, -128.709000, + 103.569000, 7.500000, -128.897995, + 103.569000, 0.000000, -128.897995, + 102.833000, 7.500000, -129.188004, + 102.833000, 0.000000, -129.188004, + 102.098000, 7.500000, -129.488007, + 102.098000, 0.000000, -129.488007, + 101.917000, 7.500000, -129.565994, + 101.917000, 0.000000, -129.565994, + 100.927002, 7.500000, -129.955994, + 100.927002, 0.000000, -129.955994, + 98.788002, 7.500000, -130.824005, + 98.788002, 0.000000, -130.824005, + 95.484001, 7.500000, -122.530998, + 95.484001, 0.000000, -122.530998, + 97.624001, 7.500000, -121.674004, + 97.624001, 0.000000, -121.674004, + 98.747002, 7.500000, -121.217003, + 98.747002, 0.000000, -121.217003, + 99.175003, 7.500000, -121.050003, + 99.175003, 0.000000, -121.050003, + 99.683998, 7.500000, -120.849998, + 99.683998, 0.000000, -120.849998, + 100.165001, 7.500000, -120.649002, + 100.165001, 0.000000, -120.649002, + 100.626999, 7.500000, -120.471001, + 100.626999, 0.000000, -120.471001, + 103.086998, 7.500000, -120.137001, + 103.086998, 0.000000, -120.137001, + 111.633003, 7.500000, -116.709000, + 111.633003, 0.000000, -116.709000, + 114.482002, 7.500000, -123.833000, + 114.482002, 0.000000, -123.833000, + 112.462997, 7.500000, -124.646004, + 112.462997, 0.000000, -124.646004, + 112.008003, 7.500000, -124.823997, + 112.008003, 0.000000, -124.823997, + 111.546997, 7.500000, -125.013000, + 111.546997, 0.000000, -125.013000, + 111.084999, 7.500000, -125.202003, + 111.084999, 0.000000, -125.202003, + 110.624001, 7.500000, -125.380997, + 110.624001, 0.000000, -125.380997, + 105.948997, 7.500000, -127.262001, + 105.948997, 0.000000, -127.262001, + 179.126007, 14.000000, 157.804001, + 179.126007, 13.700000, 157.804001, + 183.856995, 14.000000, 152.026993, + 183.856995, 13.700000, 152.026993, + 188.587997, 14.000000, 146.250000, + 188.587997, 13.700000, 146.250000, + 134.356003, 14.000000, 101.801003, + 134.356003, 13.700000, 101.801003, + 129.625000, 14.000000, 107.578499, + 129.625000, 13.700000, 107.578499, + 129.160004, 14.000000, 108.135002, + 129.160004, 13.700000, 108.135002, + 124.893997, 14.000000, 113.356003, + 124.893997, 13.700000, 113.356003, + 179.126007, 14.000311, 157.804001, + 183.856995, 20.000000, 152.026993, + 188.587997, 14.000311, 146.250000, + 129.625000, 20.000000, 107.578499, + 129.160004, 19.417305, 108.135002, + 124.893997, 14.000001, 113.356003, + 135.298996, 14.000000, 100.554001, + 135.298996, 13.700000, 100.554001, + 124.686996, 14.000000, 113.634003, + 124.686996, 13.700000, 113.634003, + 126.332001, 14.000000, 115.158997, + 126.332001, 13.700000, 115.158997, + 127.615997, 14.000000, 116.349998, + 127.615997, 13.700000, 116.349998, + 132.089005, 14.000000, 120.490997, + 132.089005, 13.700000, 120.490997, + 142.654999, 14.000000, 130.153000, + 142.654999, 13.700000, 130.153000, + 150.753006, 14.000000, 137.556000, + 150.753006, 13.700000, 137.556000, + 164.962997, 14.000000, 148.554001, + 164.962997, 13.700000, 148.554001, + 171.362000, 14.000000, 153.507004, + 171.362000, 13.700000, 153.507004, + 173.207993, 14.000000, 154.977005, + 173.207993, 13.700000, 154.977005, + 175.388000, 14.000000, 156.712997, + 175.388000, 13.700000, 156.712997, + 180.591003, 14.000000, 160.843002, + 180.591003, 13.700000, 160.843002, + 195.048004, 14.000000, 170.783997, + 195.048004, 13.700000, 170.783997, + 195.770004, 14.000000, 169.537003, + 195.770004, 13.700000, 169.537003, + 204.871002, 14.000000, 175.414001, + 204.871002, 13.700000, 175.414001, + 220.886993, 14.000000, 186.345001, + 220.886993, 13.700000, 186.345001, + 232.375000, 14.000000, 194.149002, + 232.375000, 13.700000, 194.149002, + 275.941986, 14.000000, 227.153000, + 275.941986, 13.700000, 227.153000, + 278.114990, 14.000000, 224.492996, + 278.114990, 13.700000, 224.492996, + 280.562988, 14.000000, 221.498993, + 280.562988, 13.700000, 221.498993, + 255.371994, 14.000000, 201.662003, + 255.371994, 13.700000, 201.662003, + 268.231995, 14.000000, 185.354996, + 268.231995, 13.700000, 185.354996, + 284.955994, 14.000000, 165.507004, + 284.955994, 13.700000, 165.507004, + 280.963989, 14.000000, 162.311996, + 280.963989, 13.700000, 162.311996, + 277.259003, 14.000000, 159.339996, + 277.259003, 13.700000, 159.339996, + 271.575012, 14.000000, 166.932007, + 271.575012, 13.700000, 166.932007, + 270.404999, 14.000000, 166.119003, + 270.404999, 13.700000, 166.119003, + 269.643005, 14.000000, 167.166000, + 269.643005, 13.700000, 167.166000, + 261.283997, 14.000000, 178.498001, + 261.283997, 13.700000, 178.498001, + 252.985001, 14.000000, 189.751999, + 252.985001, 13.700000, 189.751999, + 247.067001, 14.000000, 189.595993, + 247.067001, 13.700000, 189.595993, + 240.962006, 14.000000, 184.720001, + 240.962006, 13.700000, 184.720001, + 239.149002, 14.000000, 183.440002, + 239.149002, 13.700000, 183.440002, + 237.444000, 14.000000, 182.238007, + 237.444000, 13.700000, 182.238007, + 226.899002, 14.000000, 174.356995, + 226.899002, 13.700000, 174.356995, + 221.367996, 14.000000, 170.227005, + 221.367996, 13.700000, 170.227005, + 217.089005, 14.000000, 167.020996, + 217.089005, 13.700000, 167.020996, + 213.697998, 14.000000, 164.483002, + 213.697998, 13.700000, 164.483002, + 209.772995, 14.000000, 161.554993, + 209.772995, 13.700000, 161.554993, + 207.112000, 14.000000, 159.563004, + 207.112000, 13.700000, 159.563004, + 203.688004, 14.000000, 157.003006, + 203.688004, 13.700000, 157.003006, + 198.966995, 14.000000, 153.106995, + 198.966995, 13.700000, 153.106995, + 197.007004, 14.000000, 151.492996, + 197.007004, 13.700000, 151.492996, + 188.962997, 14.000000, 144.847000, + 188.962997, 13.700000, 144.847000, + 186.703003, 14.000000, 142.988007, + 186.703003, 13.700000, 142.988007, + 181.024994, 14.000000, 138.289993, + 181.024994, 13.700000, 138.289993, + 139.345001, 14.000000, 103.893997, + 139.345001, 13.700000, 103.893997, + -162.566879, 0.000000, -42.736065, + -161.684143, 0.000000, -42.266209, + -162.613861, 0.000000, -42.647793, + -161.731125, 0.000000, -42.177933, + -162.613861, 2.000000, -42.647793, + -161.731125, 2.000000, -42.177933, + -162.566879, 2.000000, -42.736065, + -161.684143, 2.000000, -42.266209, + 186.349350, 0.000000, 142.631027, + 187.120331, 0.000000, 143.267883, + 186.285660, 0.000000, 142.708130, + 187.056656, 0.000000, 143.344971, + 186.285660, 2.000000, 142.708130, + 187.056656, 2.000000, 143.344971, + 186.349350, 2.000000, 142.631027, + 187.120331, 2.000000, 143.267883, + 134.014008, 0.000000, 99.146004, + 133.014008, 0.000000, 99.146004, + 134.014008, 0.000000, 99.045998, + 133.014008, 0.000000, 99.045998, + 134.014008, 2.000000, 99.045998, + 133.014008, 2.000000, 99.045998, + 134.014008, 2.000000, 99.146004, + 133.014008, 2.000000, 99.146004, + 135.832001, 0.000000, 86.366997, + 134.832001, 0.000000, 86.366997, + 135.832001, 0.000000, 86.266998, + 134.832001, 0.000000, 86.266998, + 135.832001, 2.000000, 86.266998, + 134.832001, 2.000000, 86.266998, + 135.832001, 2.000000, 86.366997, + 134.832001, 2.000000, 86.366997, + 163.360489, 0.000000, 50.172497, + 162.620819, 0.000000, 50.845470, + 163.293182, 0.000000, 50.098530, + 162.553513, 0.000000, 50.771503, + 163.293182, 2.000000, 50.098530, + 162.553513, 2.000000, 50.771503, + 163.360489, 2.000000, 50.172497, + 162.620819, 2.000000, 50.845470, + 239.528732, 0.000000, 183.769104, + 238.711624, 0.000000, 183.192612, + 239.586380, 0.000000, 183.687393, + 238.769272, 0.000000, 183.110901, + 239.586380, 2.000000, 183.687393, + 238.769272, 2.000000, 183.110901, + 239.528732, 2.000000, 183.769104, + 238.711624, 2.000000, 183.192612, + 207.482422, 0.000000, 159.902542, + 206.681671, 0.000000, 159.303528, + 207.542328, 0.000000, 159.822464, + 206.741577, 0.000000, 159.223465, + 207.542328, 2.000000, 159.822464, + 206.741577, 2.000000, 159.223465, + 207.482422, 2.000000, 159.902542, + 206.681671, 2.000000, 159.303528, + 261.621033, 0.000000, 178.125290, + 261.027466, 0.000000, 178.930069, + 261.540527, 0.000000, 178.065933, + 260.946991, 0.000000, 178.870712, + 261.540527, 2.000000, 178.065933, + 260.946991, 2.000000, 178.870712, + 261.621033, 2.000000, 178.125290, + 261.027466, 2.000000, 178.930069, + 227.269623, 0.000000, 174.696320, + 226.468521, 0.000000, 174.097794, + 227.329483, 0.000000, 174.616211, + 226.528381, 0.000000, 174.017685, + 227.329483, 2.000000, 174.616211, + 226.528381, 2.000000, 174.017685, + 227.269623, 2.000000, 174.696320, + 226.468521, 2.000000, 174.097794, + 221.738480, 0.000000, 170.566483, + 220.937637, 0.000000, 169.967606, + 221.798370, 0.000000, 170.486389, + 220.997528, 0.000000, 169.887527, + 221.798370, 2.000000, 170.486389, + 220.997528, 2.000000, 169.887527, + 221.738480, 2.000000, 170.566483, + 220.937637, 2.000000, 169.967606, + 217.459244, 0.000000, 167.360733, + 216.658813, 0.000000, 166.761307, + 217.519180, 0.000000, 167.280701, + 216.718765, 0.000000, 166.681259, + 217.519180, 2.000000, 167.280701, + 216.718765, 2.000000, 166.681259, + 217.459244, 2.000000, 167.360733, + 216.658813, 2.000000, 166.761307, + 214.068619, 0.000000, 164.822311, + 213.267517, 0.000000, 164.223785, + 214.128479, 0.000000, 164.742203, + 213.327377, 0.000000, 164.143677, + 214.128479, 2.000000, 164.742203, + 213.327377, 2.000000, 164.143677, + 214.068619, 2.000000, 164.822311, + 213.267517, 2.000000, 164.223785 + ], + "parts": [ + { + "id": "shape1_part1", + "type": "TRIANGLES", + "indices": [ + 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4, + 4, 5, 6, 5, 7, 6, 6, 7, 8, 7, 9, 8, + 8, 9, 10, 9, 11, 10, 10, 11, 12, 11, 13, 12, + 12, 13, 14, 13, 15, 14, 14, 15, 16, 15, 17, 16, + 16, 17, 18, 17, 19, 18, 18, 19, 20, 19, 21, 20, + 20, 21, 22, 21, 23, 22, 22, 23, 24, 23, 25, 24, + 24, 25, 26, 25, 27, 26, 26, 27, 28, 27, 29, 28, + 28, 29, 30, 29, 31, 30, 30, 31, 32, 31, 33, 32, + 32, 33, 34, 33, 35, 34, 34, 35, 36, 35, 37, 36, + 36, 37, 38, 37, 39, 38, 38, 39, 40, 39, 41, 40, + 40, 41, 42, 41, 43, 42, 42, 43, 44, 43, 45, 44, + 44, 45, 46, 45, 47, 46, 46, 47, 48, 47, 49, 48, + 48, 49, 50, 49, 51, 50, 50, 51, 52, 51, 53, 52, + 52, 53, 54, 53, 55, 54, 54, 55, 56, 55, 57, 56, + 56, 57, 58, 57, 59, 58, 58, 59, 60, 59, 61, 60, + 60, 61, 62, 61, 63, 62, 62, 63, 64, 63, 65, 64, + 64, 65, 66, 65, 67, 66, 66, 67, 68, 67, 69, 68, + 68, 69, 70, 69, 71, 70, 70, 71, 72, 71, 73, 72, + 72, 73, 74, 73, 75, 74, 74, 75, 76, 75, 77, 76, + 76, 77, 78, 77, 79, 78, 78, 79, 80, 79, 81, 80, + 80, 81, 82, 81, 83, 82, 82, 83, 84, 83, 85, 84, + 84, 85, 86, 85, 87, 86, 86, 87, 88, 87, 89, 88, + 88, 89, 90, 89, 91, 90, 90, 91, 0, 91, 1, 0, + 0, 0, 2, 0, 2, 2, 2, 2, 4, 2, 4, 4, + 4, 4, 6, 4, 6, 6, 6, 6, 8, 6, 8, 8, + 8, 8, 10, 8, 10, 10, 10, 10, 12, 10, 12, 12, + 12, 12, 14, 12, 14, 14, 14, 14, 16, 14, 16, 16, + 16, 16, 18, 16, 18, 18, 18, 18, 20, 18, 20, 20, + 20, 20, 22, 20, 22, 22, 22, 22, 24, 22, 24, 24, + 24, 24, 26, 24, 26, 26, 26, 26, 28, 26, 28, 28, + 28, 28, 30, 28, 30, 30, 30, 30, 32, 30, 32, 32, + 32, 32, 34, 32, 34, 34, 34, 34, 36, 34, 36, 36, + 36, 36, 38, 36, 38, 38, 38, 38, 40, 38, 40, 40, + 40, 40, 42, 40, 42, 42, 42, 42, 44, 42, 44, 44, + 44, 44, 46, 44, 46, 46, 46, 46, 48, 46, 48, 48, + 48, 48, 50, 48, 50, 50, 50, 50, 52, 50, 52, 52, + 52, 52, 54, 52, 54, 54, 54, 54, 56, 54, 56, 56, + 56, 56, 58, 56, 58, 58, 58, 58, 60, 58, 60, 60, + 60, 60, 62, 60, 62, 62, 62, 62, 64, 62, 64, 64, + 64, 64, 66, 64, 66, 66, 66, 66, 68, 66, 68, 68, + 68, 68, 70, 68, 70, 70, 70, 70, 72, 70, 72, 72, + 72, 72, 74, 72, 74, 74, 74, 74, 76, 74, 76, 76, + 76, 76, 78, 76, 78, 78, 78, 78, 80, 78, 80, 80, + 80, 80, 82, 80, 82, 82, 82, 82, 84, 82, 84, 84, + 84, 84, 86, 84, 86, 86, 86, 86, 88, 86, 88, 88, + 88, 88, 90, 88, 90, 90, 90, 90, 0, 90, 0, 0, + 92, 93, 94, 93, 95, 94, 94, 95, 96, 95, 97, 96, + 96, 97, 98, 97, 99, 98, 98, 99, 100, 99, 101, 100, + 100, 101, 102, 101, 103, 102, 102, 103, 104, 103, 105, 104, + 104, 105, 106, 105, 107, 106, 106, 107, 108, 107, 109, 108, + 108, 109, 92, 109, 93, 92, 92, 92, 94, 92, 94, 94, + 94, 94, 96, 94, 96, 96, 96, 96, 98, 96, 98, 98, + 98, 98, 100, 98, 100, 100, 100, 100, 102, 100, 102, 102, + 102, 102, 104, 102, 104, 104, 104, 104, 106, 104, 106, 106, + 106, 106, 108, 106, 108, 108, 108, 108, 92, 108, 92, 92, + 110, 111, 112, 111, 113, 112, 112, 113, 114, 113, 115, 114, + 114, 115, 116, 115, 117, 116, 116, 117, 118, 117, 119, 118, + 118, 119, 120, 119, 121, 120, 120, 121, 110, 121, 111, 110, + 110, 110, 112, 110, 112, 112, 112, 112, 114, 112, 114, 114, + 114, 114, 116, 114, 116, 116, 116, 116, 118, 116, 118, 118, + 118, 118, 120, 118, 120, 120, 120, 120, 110, 120, 110, 110, + 142, 143, 144, 143, 145, 144, 144, 145, 146, 145, 147, 146, + 146, 147, 148, 147, 149, 148, 148, 149, 150, 149, 151, 150, + 150, 151, 152, 151, 153, 152, 152, 153, 154, 153, 155, 154, + 154, 155, 156, 155, 157, 156, 156, 157, 158, 157, 159, 158, + 158, 159, 142, 159, 143, 142, 142, 142, 144, 142, 144, 144, + 144, 144, 146, 144, 146, 146, 146, 146, 148, 146, 148, 148, + 148, 148, 150, 148, 150, 150, 150, 150, 152, 150, 152, 152, + 152, 152, 154, 152, 154, 154, 154, 154, 156, 154, 156, 156, + 156, 156, 158, 156, 158, 158, 158, 158, 142, 158, 142, 142, + 160, 161, 162, 161, 163, 162, 162, 163, 164, 163, 165, 164, + 164, 165, 166, 165, 167, 166, 166, 167, 168, 167, 169, 168, + 168, 169, 170, 169, 171, 170, 170, 171, 172, 171, 173, 172, + 172, 173, 174, 173, 175, 174, 174, 175, 176, 175, 177, 176, + 176, 177, 178, 177, 179, 178, 178, 179, 180, 179, 181, 180, + 180, 181, 182, 181, 183, 182, 182, 183, 184, 183, 185, 184, + 184, 185, 186, 185, 187, 186, 186, 187, 188, 187, 189, 188, + 188, 189, 190, 189, 191, 190, 190, 191, 192, 191, 193, 192, + 192, 193, 194, 193, 195, 194, 194, 195, 196, 195, 197, 196, + 196, 197, 198, 197, 199, 198, 198, 199, 160, 199, 161, 160, + 160, 160, 162, 160, 162, 162, 162, 162, 164, 162, 164, 164, + 164, 164, 166, 164, 166, 166, 166, 166, 168, 166, 168, 168, + 168, 168, 170, 168, 170, 170, 170, 170, 172, 170, 172, 172, + 172, 172, 174, 172, 174, 174, 174, 174, 176, 174, 176, 176, + 176, 176, 178, 176, 178, 178, 178, 178, 180, 178, 180, 180, + 180, 180, 182, 180, 182, 182, 182, 182, 184, 182, 184, 184, + 184, 184, 186, 184, 186, 186, 186, 186, 188, 186, 188, 188, + 188, 188, 190, 188, 190, 190, 190, 190, 192, 190, 192, 192, + 192, 192, 194, 192, 194, 194, 194, 194, 196, 194, 196, 196, + 196, 196, 198, 196, 198, 198, 198, 198, 160, 198, 160, 160, + 200, 143, 201, 143, 159, 201, 201, 159, 202, 159, 157, 202, + 202, 157, 203, 157, 155, 203, 203, 155, 204, 155, 153, 204, + 204, 153, 205, 153, 151, 205, 205, 151, 206, 151, 149, 206, + 206, 149, 207, 149, 147, 207, 207, 147, 208, 147, 145, 208, + 208, 145, 200, 145, 143, 200, 200, 200, 201, 200, 201, 201, + 201, 201, 202, 201, 202, 202, 202, 202, 203, 202, 203, 203, + 203, 203, 204, 203, 204, 204, 204, 204, 205, 204, 205, 205, + 205, 205, 206, 205, 206, 206, 206, 206, 207, 206, 207, 207, + 207, 207, 208, 207, 208, 208, 208, 208, 200, 208, 200, 200, + 209, 210, 211, 210, 212, 211, 211, 212, 213, 212, 214, 213, + 213, 214, 215, 214, 216, 215, 215, 216, 217, 216, 218, 217, + 217, 218, 219, 218, 220, 219, 219, 220, 221, 220, 222, 221, + 221, 222, 223, 222, 224, 223, 223, 224, 225, 224, 226, 225, + 225, 226, 227, 226, 228, 227, 227, 228, 229, 228, 230, 229, + 229, 230, 209, 230, 210, 209, 209, 209, 211, 209, 211, 211, + 211, 211, 213, 211, 213, 213, 213, 213, 215, 213, 215, 215, + 215, 215, 217, 215, 217, 217, 217, 217, 219, 217, 219, 219, + 219, 219, 221, 219, 221, 221, 221, 221, 223, 221, 223, 223, + 223, 223, 225, 223, 225, 225, 225, 225, 227, 225, 227, 227, + 227, 227, 229, 227, 229, 229, 229, 229, 209, 229, 209, 209, + 231, 232, 32, 232, 33, 32, 32, 33, 30, 33, 31, 30, + 30, 31, 28, 31, 29, 28, 28, 29, 26, 29, 27, 26, + 26, 27, 233, 27, 234, 233, 233, 234, 235, 234, 236, 235, + 235, 236, 237, 236, 238, 237, 237, 238, 239, 238, 240, 239, + 239, 240, 241, 240, 242, 241, 241, 242, 243, 242, 244, 243, + 243, 244, 245, 244, 246, 245, 245, 246, 247, 246, 248, 247, + 247, 248, 249, 248, 250, 249, 249, 250, 251, 250, 252, 251, + 251, 252, 253, 252, 254, 253, 253, 254, 255, 254, 256, 255, + 255, 256, 231, 256, 232, 231, 231, 231, 32, 231, 32, 32, + 32, 32, 30, 32, 30, 30, 30, 30, 28, 30, 28, 28, + 28, 28, 26, 28, 26, 26, 26, 26, 233, 26, 233, 233, + 233, 233, 235, 233, 235, 235, 235, 235, 237, 235, 237, 237, + 237, 237, 239, 237, 239, 239, 239, 239, 241, 239, 241, 241, + 241, 241, 243, 241, 243, 243, 243, 243, 245, 243, 245, 245, + 245, 245, 247, 245, 247, 247, 247, 247, 249, 247, 249, 249, + 249, 249, 251, 249, 251, 251, 251, 251, 253, 251, 253, 253, + 253, 253, 255, 253, 255, 255, 255, 255, 231, 255, 231, 231, + 257, 258, 259, 258, 260, 259, 259, 260, 261, 260, 262, 261, + 261, 262, 263, 262, 264, 263, 263, 264, 265, 264, 266, 265, + 265, 266, 267, 266, 268, 267, 267, 268, 269, 268, 270, 269, + 269, 270, 271, 270, 272, 271, 271, 272, 257, 272, 258, 257, + 257, 257, 259, 257, 259, 259, 259, 259, 261, 259, 261, 261, + 261, 261, 263, 261, 263, 263, 263, 263, 265, 263, 265, 265, + 265, 265, 267, 265, 267, 267, 267, 267, 269, 267, 269, 269, + 269, 269, 271, 269, 271, 271, 271, 271, 257, 271, 257, 257, + 273, 274, 275, 274, 276, 275, 275, 276, 277, 276, 278, 277, + 277, 278, 279, 278, 280, 279, 279, 280, 273, 280, 274, 273, + 273, 273, 275, 273, 275, 275, 275, 275, 277, 275, 277, 277, + 277, 277, 279, 277, 279, 279, 279, 279, 273, 279, 273, 273, + 281, 282, 283, 282, 284, 283, 283, 284, 285, 284, 286, 285, + 285, 286, 287, 286, 288, 287, 287, 288, 289, 288, 290, 289, + 289, 290, 281, 290, 282, 281, 281, 281, 283, 281, 283, 283, + 283, 283, 285, 283, 285, 285, 285, 285, 287, 285, 287, 287, + 287, 287, 289, 287, 289, 289, 289, 289, 281, 289, 281, 281, + 291, 292, 293, 292, 294, 293, 293, 294, 295, 294, 296, 295, + 295, 296, 297, 296, 298, 297, 297, 298, 299, 298, 300, 299, + 299, 300, 301, 300, 302, 301, 301, 302, 303, 302, 304, 303, + 303, 304, 291, 304, 292, 291, 291, 291, 293, 291, 293, 293, + 293, 293, 295, 293, 295, 295, 295, 295, 297, 295, 297, 297, + 297, 297, 299, 297, 299, 299, 299, 299, 301, 299, 301, 301, + 301, 301, 303, 301, 303, 303, 303, 303, 291, 303, 291, 291, + 305, 306, 307, 306, 308, 307, 307, 308, 309, 308, 284, 309, + 309, 284, 310, 284, 282, 310, 310, 282, 305, 282, 306, 305, + 305, 305, 307, 305, 307, 307, 307, 307, 309, 307, 309, 309, + 309, 309, 310, 309, 310, 310, 310, 310, 305, 310, 305, 305, + 311, 312, 313, 312, 314, 313, 313, 314, 315, 314, 316, 315, + 315, 316, 317, 316, 318, 317, 317, 318, 311, 318, 312, 311, + 311, 311, 313, 311, 313, 313, 313, 313, 315, 313, 315, 315, + 315, 315, 317, 315, 317, 317, 317, 317, 311, 317, 311, 311, + 345, 346, 347, 346, 348, 347, 347, 348, 349, 348, 350, 349, + 349, 350, 351, 350, 352, 351, 351, 352, 353, 352, 354, 353, + 353, 354, 355, 354, 356, 355, 355, 356, 357, 356, 358, 357, + 357, 358, 359, 358, 360, 359, 359, 360, 361, 360, 362, 361, + 361, 362, 363, 362, 364, 363, 363, 364, 365, 364, 366, 365, + 365, 366, 367, 366, 368, 367, 367, 368, 345, 368, 346, 345, + 345, 345, 347, 345, 347, 347, 347, 347, 349, 347, 349, 349, + 349, 349, 351, 349, 351, 351, 351, 351, 353, 351, 353, 353, + 353, 353, 355, 353, 355, 355, 355, 355, 357, 355, 357, 357, + 357, 357, 359, 357, 359, 359, 359, 359, 361, 359, 361, 361, + 361, 361, 363, 361, 363, 363, 363, 363, 365, 363, 365, 365, + 365, 365, 367, 365, 367, 367, 367, 367, 345, 367, 345, 345, + 369, 360, 370, 360, 358, 370, 370, 358, 371, 358, 356, 371, + 371, 356, 372, 356, 354, 372, 372, 354, 373, 354, 352, 373, + 373, 352, 374, 352, 350, 374, 374, 350, 375, 350, 376, 375, + 375, 376, 377, 376, 378, 377, 377, 378, 379, 378, 380, 379, + 379, 380, 381, 380, 382, 381, 381, 382, 383, 382, 384, 383, + 383, 384, 385, 384, 386, 385, 385, 386, 387, 386, 388, 387, + 387, 388, 369, 388, 360, 369, 369, 369, 370, 369, 370, 370, + 370, 370, 371, 370, 371, 371, 371, 371, 372, 371, 372, 372, + 372, 372, 373, 372, 373, 373, 373, 373, 374, 373, 374, 374, + 374, 374, 375, 374, 375, 375, 375, 375, 377, 375, 377, 377, + 377, 377, 379, 377, 379, 379, 379, 379, 381, 379, 381, 381, + 381, 381, 383, 381, 383, 383, 383, 383, 385, 383, 385, 385, + 385, 385, 387, 385, 387, 387, 387, 387, 369, 387, 369, 369, + 389, 390, 391, 390, 392, 391, 391, 392, 393, 392, 394, 393, + 393, 394, 395, 394, 396, 395, 395, 396, 397, 396, 398, 397, + 397, 398, 399, 398, 400, 399, 399, 400, 389, 400, 390, 389, + 389, 389, 391, 389, 391, 391, 391, 391, 393, 391, 393, 393, + 393, 393, 395, 393, 395, 395, 395, 395, 397, 395, 397, 397, + 397, 397, 399, 397, 399, 399, 399, 399, 389, 399, 389, 389, + 401, 402, 403, 402, 404, 403, 403, 404, 405, 404, 406, 405, + 405, 406, 407, 406, 408, 407, 407, 408, 409, 408, 410, 409, + 409, 410, 411, 410, 412, 411, 411, 412, 413, 412, 414, 413, + 413, 414, 415, 414, 416, 415, 415, 416, 401, 416, 402, 401, + 401, 401, 403, 401, 403, 403, 403, 403, 405, 403, 405, 405, + 405, 405, 407, 405, 407, 407, 407, 407, 409, 407, 409, 409, + 409, 409, 411, 409, 411, 411, 411, 411, 413, 411, 413, 413, + 413, 413, 415, 413, 415, 415, 415, 415, 401, 415, 401, 401, + 417, 418, 419, 418, 420, 419, 419, 420, 421, 420, 422, 421, + 421, 422, 423, 422, 424, 423, 423, 424, 425, 424, 426, 425, + 425, 426, 427, 426, 428, 427, 427, 428, 429, 428, 430, 429, + 429, 430, 431, 430, 432, 431, 431, 432, 433, 432, 434, 433, + 433, 434, 417, 434, 418, 417, 417, 417, 419, 417, 419, 419, + 419, 419, 421, 419, 421, 421, 421, 421, 423, 421, 423, 423, + 423, 423, 425, 423, 425, 425, 425, 425, 427, 425, 427, 427, + 427, 427, 429, 427, 429, 429, 429, 429, 431, 429, 431, 431, + 431, 431, 433, 431, 433, 433, 433, 433, 417, 433, 417, 417, + 435, 430, 436, 430, 437, 436, 436, 437, 438, 437, 439, 438, + 438, 439, 440, 439, 441, 440, 440, 441, 442, 441, 443, 442, + 442, 443, 444, 443, 445, 444, 444, 445, 446, 445, 447, 446, + 446, 447, 448, 447, 418, 448, 448, 418, 449, 418, 434, 449, + 449, 434, 450, 434, 432, 450, 450, 432, 435, 432, 430, 435, + 435, 435, 436, 435, 436, 436, 436, 436, 438, 436, 438, 438, + 438, 438, 440, 438, 440, 440, 440, 440, 442, 440, 442, 442, + 442, 442, 444, 442, 444, 444, 444, 444, 446, 444, 446, 446, + 446, 446, 448, 446, 448, 448, 448, 448, 449, 448, 449, 449, + 449, 449, 450, 449, 450, 450, 450, 450, 435, 450, 435, 435, + 451, 420, 452, 420, 453, 452, 452, 453, 454, 453, 455, 454, + 454, 455, 456, 455, 457, 456, 456, 457, 458, 457, 459, 458, + 458, 459, 460, 459, 461, 460, 460, 461, 462, 461, 463, 462, + 462, 463, 464, 463, 465, 464, 464, 465, 466, 465, 467, 466, + 466, 467, 468, 467, 469, 468, 468, 469, 470, 469, 471, 470, + 470, 471, 472, 471, 473, 472, 472, 473, 474, 473, 439, 474, + 474, 439, 475, 439, 437, 475, 475, 437, 476, 437, 430, 476, + 476, 430, 477, 430, 428, 477, 477, 428, 478, 428, 426, 478, + 478, 426, 479, 426, 424, 479, 479, 424, 480, 424, 422, 480, + 480, 422, 451, 422, 420, 451, 451, 451, 452, 451, 452, 452, + 452, 452, 454, 452, 454, 454, 454, 454, 456, 454, 456, 456, + 456, 456, 458, 456, 458, 458, 458, 458, 460, 458, 460, 460, + 460, 460, 462, 460, 462, 462, 462, 462, 464, 462, 464, 464, + 464, 464, 466, 464, 466, 466, 466, 466, 468, 466, 468, 468, + 468, 468, 470, 468, 470, 470, 470, 470, 472, 470, 472, 472, + 472, 472, 474, 472, 474, 474, 474, 474, 475, 474, 475, 475, + 475, 475, 476, 475, 476, 476, 476, 476, 477, 476, 477, 477, + 477, 477, 478, 477, 478, 478, 478, 478, 479, 478, 479, 479, + 479, 479, 480, 479, 480, 480, 480, 480, 451, 480, 451, 451, + 295, 296, 293, 296, 294, 293, 293, 294, 481, 294, 482, 481, + 481, 482, 483, 482, 484, 483, 483, 484, 295, 484, 296, 295, + 295, 295, 293, 295, 293, 293, 293, 293, 481, 293, 481, 481, + 481, 481, 483, 481, 483, 483, 483, 483, 295, 483, 295, 295, + 485, 486, 487, 486, 488, 487, 487, 488, 303, 488, 304, 303, + 303, 304, 301, 304, 302, 301, 301, 302, 299, 302, 300, 299, + 299, 300, 297, 300, 298, 297, 297, 298, 485, 298, 486, 485, + 485, 485, 487, 485, 487, 487, 487, 487, 303, 487, 303, 303, + 303, 303, 301, 303, 301, 301, 301, 301, 299, 301, 299, 299, + 299, 299, 297, 299, 297, 297, 297, 297, 485, 297, 485, 485, + 489, 490, 491, 490, 492, 491, 491, 492, 493, 492, 494, 493, + 493, 494, 495, 494, 496, 495, 495, 496, 489, 496, 490, 489, + 489, 489, 491, 489, 491, 491, 491, 491, 493, 491, 493, 493, + 493, 493, 495, 493, 495, 495, 495, 495, 489, 495, 489, 489, + 495, 496, 493, 496, 494, 493, 493, 494, 497, 494, 498, 497, + 497, 498, 499, 498, 500, 499, 499, 500, 501, 500, 502, 501, + 501, 502, 495, 502, 496, 495, 495, 495, 493, 495, 493, 493, + 493, 493, 497, 493, 497, 497, 497, 497, 499, 497, 499, 499, + 499, 499, 501, 499, 501, 501, 501, 501, 495, 501, 495, 495, + 503, 504, 499, 504, 500, 499, 499, 500, 497, 500, 498, 497, + 497, 498, 505, 498, 506, 505, 505, 506, 507, 506, 508, 507, + 507, 508, 503, 508, 504, 503, 503, 503, 499, 503, 499, 499, + 499, 499, 497, 499, 497, 497, 497, 497, 505, 497, 505, 505, + 505, 505, 507, 505, 507, 507, 507, 507, 503, 507, 503, 503, + 509, 510, 511, 510, 512, 511, 511, 512, 513, 512, 514, 513, + 513, 514, 515, 514, 516, 515, 515, 516, 517, 516, 518, 517, + 517, 518, 519, 518, 520, 519, 519, 520, 521, 520, 522, 521, + 521, 522, 509, 522, 510, 509, 509, 509, 511, 509, 511, 511, + 511, 511, 513, 511, 513, 513, 513, 513, 515, 513, 515, 515, + 515, 515, 517, 515, 517, 517, 517, 517, 519, 517, 519, 519, + 519, 519, 521, 519, 521, 521, 521, 521, 509, 521, 509, 509, + 523, 524, 525, 524, 526, 525, 525, 526, 527, 526, 528, 527, + 527, 528, 529, 528, 530, 529, 529, 530, 531, 530, 532, 531, + 531, 532, 533, 532, 534, 533, 533, 534, 535, 534, 536, 535, + 535, 536, 537, 536, 538, 537, 537, 538, 539, 538, 540, 539, + 539, 540, 541, 540, 542, 541, 541, 542, 543, 542, 544, 543, + 543, 544, 545, 544, 546, 545, 545, 546, 547, 546, 548, 547, + 547, 548, 523, 548, 524, 523, 523, 523, 525, 523, 525, 525, + 525, 525, 527, 525, 527, 527, 527, 527, 529, 527, 529, 529, + 529, 529, 531, 529, 531, 531, 531, 531, 533, 531, 533, 533, + 533, 533, 535, 533, 535, 535, 535, 535, 537, 535, 537, 537, + 537, 537, 539, 537, 539, 539, 539, 539, 541, 539, 541, 541, + 541, 541, 543, 541, 543, 543, 543, 543, 545, 543, 545, 545, + 545, 545, 547, 545, 547, 547, 547, 547, 523, 547, 523, 523, + 549, 550, 551, 550, 552, 551, 551, 552, 553, 552, 554, 553, + 553, 554, 555, 554, 556, 555, 555, 556, 114, 556, 115, 114, + 114, 115, 112, 115, 113, 112, 112, 113, 110, 113, 111, 110, + 110, 111, 557, 111, 558, 557, 557, 558, 559, 558, 560, 559, + 559, 560, 561, 560, 562, 561, 561, 562, 563, 562, 564, 563, + 563, 564, 565, 564, 566, 565, 565, 566, 567, 566, 568, 567, + 567, 568, 569, 568, 570, 569, 569, 570, 571, 570, 572, 571, + 571, 572, 573, 572, 574, 573, 573, 574, 549, 574, 550, 549, + 549, 549, 551, 549, 551, 551, 551, 551, 553, 551, 553, 553, + 553, 553, 555, 553, 555, 555, 555, 555, 114, 555, 114, 114, + 114, 114, 112, 114, 112, 112, 112, 112, 110, 112, 110, 110, + 110, 110, 557, 110, 557, 557, 557, 557, 559, 557, 559, 559, + 559, 559, 561, 559, 561, 561, 561, 561, 563, 561, 563, 563, + 563, 563, 565, 563, 565, 565, 565, 565, 567, 565, 567, 567, + 567, 567, 569, 567, 569, 569, 569, 569, 571, 569, 571, 571, + 571, 571, 573, 571, 573, 573, 573, 573, 549, 573, 549, 549, + 575, 576, 577, 576, 578, 577, 577, 578, 579, 578, 580, 579, + 579, 580, 581, 580, 582, 581, 581, 582, 583, 582, 584, 583, + 583, 584, 585, 584, 586, 585, 585, 586, 587, 586, 588, 587, + 587, 588, 589, 588, 590, 589, 589, 590, 591, 590, 592, 591, + 591, 592, 593, 592, 594, 593, 593, 594, 595, 594, 596, 595, + 595, 596, 597, 596, 598, 597, 597, 598, 599, 598, 600, 599, + 599, 600, 601, 600, 602, 601, 601, 602, 603, 602, 604, 603, + 603, 604, 605, 604, 532, 605, 605, 532, 606, 532, 530, 606, + 606, 530, 575, 530, 576, 575, 575, 575, 577, 575, 577, 577, + 577, 577, 579, 577, 579, 579, 579, 579, 581, 579, 581, 581, + 581, 581, 583, 581, 583, 583, 583, 583, 585, 583, 585, 585, + 585, 585, 587, 585, 587, 587, 587, 587, 589, 587, 589, 589, + 589, 589, 591, 589, 591, 591, 591, 591, 593, 591, 593, 593, + 593, 593, 595, 593, 595, 595, 595, 595, 597, 595, 597, 597, + 597, 597, 599, 597, 599, 599, 599, 599, 601, 599, 601, 601, + 601, 601, 603, 601, 603, 603, 603, 603, 605, 603, 605, 605, + 605, 605, 606, 605, 606, 606, 606, 606, 575, 606, 575, 575, + 607, 608, 609, 608, 610, 609, 609, 610, 611, 610, 612, 611, + 611, 612, 613, 612, 614, 613, 613, 614, 581, 614, 582, 581, + 581, 582, 579, 582, 580, 579, 579, 580, 607, 580, 608, 607, + 607, 607, 609, 607, 609, 609, 609, 609, 611, 609, 611, 611, + 611, 611, 613, 611, 613, 613, 613, 613, 581, 613, 581, 581, + 581, 581, 579, 581, 579, 579, 579, 579, 607, 579, 607, 607, + 615, 616, 617, 616, 618, 617, 617, 618, 619, 618, 510, 619, + 619, 510, 620, 510, 522, 620, 620, 522, 621, 522, 520, 621, + 621, 520, 615, 520, 616, 615, 615, 615, 617, 615, 617, 617, + 617, 617, 619, 617, 619, 619, 619, 619, 620, 619, 620, 620, + 620, 620, 621, 620, 621, 621, 621, 621, 615, 621, 615, 615, + 622, 623, 624, 623, 534, 624, 624, 534, 605, 534, 532, 605, + 605, 532, 603, 532, 604, 603, 603, 604, 622, 604, 623, 622, + 622, 622, 624, 622, 624, 624, 624, 624, 605, 624, 605, 605, + 605, 605, 603, 605, 603, 603, 603, 603, 622, 603, 622, 622, + 625, 626, 627, 626, 628, 627, 627, 628, 629, 628, 630, 629, + 629, 630, 631, 630, 632, 631, 631, 632, 625, 632, 626, 625, + 625, 625, 627, 625, 627, 627, 627, 627, 629, 627, 629, 629, + 629, 629, 631, 629, 631, 631, 631, 631, 625, 631, 625, 625, + 633, 634, 635, 634, 538, 635, 635, 538, 636, 538, 536, 636, + 636, 536, 624, 536, 534, 624, 624, 534, 622, 534, 623, 622, + 622, 623, 637, 623, 638, 637, 637, 638, 639, 638, 640, 639, + 639, 640, 633, 640, 634, 633, 633, 633, 635, 633, 635, 635, + 635, 635, 636, 635, 636, 636, 636, 636, 624, 636, 624, 624, + 624, 624, 622, 624, 622, 622, 622, 622, 637, 622, 637, 637, + 637, 637, 639, 637, 639, 639, 639, 639, 633, 639, 633, 633, + 641, 642, 643, 642, 644, 643, 643, 644, 645, 644, 646, 645, + 645, 646, 647, 646, 542, 647, 647, 542, 648, 542, 540, 648, + 648, 540, 649, 540, 650, 649, 649, 650, 651, 650, 652, 651, + 651, 652, 653, 652, 654, 653, 653, 654, 655, 654, 656, 655, + 655, 656, 641, 656, 642, 641, 641, 641, 643, 641, 643, 643, + 643, 643, 645, 643, 645, 645, 645, 645, 647, 645, 647, 647, + 647, 647, 648, 647, 648, 648, 648, 648, 649, 648, 649, 649, + 649, 649, 651, 649, 651, 651, 651, 651, 653, 651, 653, 653, + 653, 653, 655, 653, 655, 655, 655, 655, 641, 655, 641, 641, + 668, 669, 670, 669, 671, 670, 670, 671, 672, 671, 673, 672, + 672, 673, 674, 673, 675, 674, 674, 675, 668, 675, 669, 668, + 668, 668, 670, 668, 670, 670, 670, 670, 672, 670, 672, 672, + 672, 672, 674, 672, 674, 674, 674, 674, 668, 674, 668, 668, + 120, 121, 118, 121, 119, 118, 118, 119, 676, 119, 677, 676, + 676, 677, 674, 677, 675, 674, 674, 675, 672, 675, 673, 672, + 672, 673, 120, 673, 121, 120, 120, 120, 118, 120, 118, 118, + 118, 118, 676, 118, 676, 676, 676, 676, 674, 676, 674, 674, + 674, 674, 672, 674, 672, 672, 672, 672, 120, 672, 120, 120, + 670, 671, 668, 671, 669, 668, 668, 669, 678, 669, 679, 678, + 678, 679, 680, 679, 681, 680, 680, 681, 682, 681, 683, 682, + 682, 683, 684, 683, 685, 684, 684, 685, 686, 685, 687, 686, + 686, 687, 670, 687, 671, 670, 670, 670, 668, 670, 668, 668, + 668, 668, 678, 668, 678, 678, 678, 678, 680, 678, 680, 680, + 680, 680, 682, 680, 682, 682, 682, 682, 684, 682, 684, 684, + 684, 684, 686, 684, 686, 686, 686, 686, 670, 686, 670, 670, + 688, 689, 690, 689, 691, 690, 690, 691, 692, 691, 693, 692, + 692, 693, 694, 693, 695, 694, 694, 695, 696, 695, 697, 696, + 696, 697, 698, 697, 699, 698, 698, 699, 700, 699, 701, 700, + 700, 701, 702, 701, 703, 702, 702, 703, 704, 703, 705, 704, + 704, 705, 688, 705, 689, 688, 688, 688, 690, 688, 690, 690, + 690, 690, 692, 690, 692, 692, 692, 692, 694, 692, 694, 694, + 694, 694, 696, 694, 696, 696, 696, 696, 698, 696, 698, 698, + 698, 698, 700, 698, 700, 700, 700, 700, 702, 700, 702, 702, + 702, 702, 704, 702, 704, 704, 704, 704, 688, 704, 688, 688, + 692, 693, 706, 693, 707, 706, 706, 707, 708, 707, 709, 708, + 708, 709, 710, 709, 711, 710, 710, 711, 712, 711, 713, 712, + 712, 713, 714, 713, 715, 714, 714, 715, 716, 715, 717, 716, + 716, 717, 718, 717, 93, 718, 718, 93, 719, 93, 109, 719, + 719, 109, 720, 109, 103, 720, 720, 103, 721, 103, 101, 721, + 721, 101, 694, 101, 695, 694, 694, 695, 692, 695, 693, 692, + 692, 692, 706, 692, 706, 706, 706, 706, 708, 706, 708, 708, + 708, 708, 710, 708, 710, 710, 710, 710, 712, 710, 712, 712, + 712, 712, 714, 712, 714, 714, 714, 714, 716, 714, 716, 716, + 716, 716, 718, 716, 718, 718, 718, 718, 719, 718, 719, 719, + 719, 719, 720, 719, 720, 720, 720, 720, 721, 720, 721, 721, + 721, 721, 694, 721, 694, 694, 694, 694, 692, 694, 692, 692, + 722, 723, 724, 723, 725, 724, 724, 725, 726, 725, 727, 726, + 726, 727, 728, 727, 729, 728, 728, 729, 730, 729, 731, 730, + 730, 731, 732, 731, 733, 732, 732, 733, 734, 733, 735, 734, + 734, 735, 736, 735, 737, 736, 736, 737, 738, 737, 739, 738, + 738, 739, 740, 739, 741, 740, 740, 741, 742, 741, 743, 742, + 742, 743, 744, 743, 745, 744, 744, 745, 746, 745, 747, 746, + 746, 747, 748, 747, 749, 748, 748, 749, 750, 749, 751, 750, + 750, 751, 752, 751, 753, 752, 752, 753, 754, 753, 755, 754, + 754, 755, 756, 755, 757, 756, 756, 757, 722, 757, 723, 722, + 722, 722, 724, 722, 724, 724, 724, 724, 726, 724, 726, 726, + 726, 726, 728, 726, 728, 728, 728, 728, 730, 728, 730, 730, + 730, 730, 732, 730, 732, 732, 732, 732, 734, 732, 734, 734, + 734, 734, 736, 734, 736, 736, 736, 736, 738, 736, 738, 738, + 738, 738, 740, 738, 740, 740, 740, 740, 742, 740, 742, 742, + 742, 742, 744, 742, 744, 744, 744, 744, 746, 744, 746, 746, + 746, 746, 748, 746, 748, 748, 748, 748, 750, 748, 750, 750, + 750, 750, 752, 750, 752, 752, 752, 752, 754, 752, 754, 754, + 754, 754, 756, 754, 756, 756, 756, 756, 722, 756, 722, 722, + 758, 759, 760, 759, 761, 760, 760, 761, 762, 761, 763, 762, + 762, 763, 764, 763, 765, 764, 764, 765, 766, 765, 767, 766, + 766, 767, 768, 767, 769, 768, 768, 769, 770, 769, 771, 770, + 770, 771, 772, 771, 773, 772, 772, 773, 774, 773, 775, 774, + 774, 775, 758, 775, 759, 758, 758, 758, 760, 758, 760, 760, + 760, 760, 762, 760, 762, 762, 762, 762, 764, 762, 764, 764, + 764, 764, 766, 764, 766, 766, 766, 766, 768, 766, 768, 768, + 768, 768, 770, 768, 770, 770, 770, 770, 772, 770, 772, 772, + 772, 772, 774, 772, 774, 774, 774, 774, 758, 774, 758, 758, + 776, 777, 770, 777, 771, 770, 770, 771, 768, 771, 769, 768, + 768, 769, 778, 769, 779, 778, 778, 779, 780, 779, 781, 780, + 780, 781, 782, 781, 783, 782, 782, 783, 784, 783, 785, 784, + 784, 785, 776, 785, 777, 776, 776, 776, 770, 776, 770, 770, + 770, 770, 768, 770, 768, 768, 768, 768, 778, 768, 778, 778, + 778, 778, 780, 778, 780, 780, 780, 780, 782, 780, 782, 782, + 782, 782, 784, 782, 784, 784, 784, 784, 776, 784, 776, 776, + 776, 777, 784, 777, 785, 784, 784, 785, 782, 785, 783, 782, + 782, 783, 780, 783, 781, 780, 780, 781, 786, 781, 787, 786, + 786, 787, 788, 787, 789, 788, 788, 789, 790, 789, 791, 790, + 790, 791, 792, 791, 793, 792, 792, 793, 794, 793, 795, 794, + 794, 795, 796, 795, 797, 796, 796, 797, 776, 797, 777, 776, + 776, 776, 784, 776, 784, 784, 784, 784, 782, 784, 782, 782, + 782, 782, 780, 782, 780, 780, 780, 780, 786, 780, 786, 786, + 786, 786, 788, 786, 788, 788, 788, 788, 790, 788, 790, 790, + 790, 790, 792, 790, 792, 792, 792, 792, 794, 792, 794, 794, + 794, 794, 796, 794, 796, 796, 796, 796, 776, 796, 776, 776, + 792, 793, 790, 793, 791, 790, 790, 791, 788, 791, 789, 788, + 788, 789, 786, 789, 787, 786, 786, 787, 780, 787, 781, 780, + 780, 781, 778, 781, 779, 778, 778, 779, 768, 779, 769, 768, + 768, 769, 766, 769, 767, 766, 766, 767, 764, 767, 765, 764, + 764, 765, 762, 765, 763, 762, 762, 763, 760, 763, 761, 760, + 760, 761, 758, 761, 759, 758, 758, 759, 798, 759, 799, 798, + 798, 799, 800, 799, 801, 800, 800, 801, 802, 801, 803, 802, + 802, 803, 804, 803, 805, 804, 804, 805, 806, 805, 807, 806, + 806, 807, 808, 807, 809, 808, 808, 809, 810, 809, 811, 810, + 810, 811, 812, 811, 813, 812, 812, 813, 814, 813, 815, 814, + 814, 815, 816, 815, 817, 816, 816, 817, 818, 817, 819, 818, + 818, 819, 820, 819, 821, 820, 820, 821, 822, 821, 823, 822, + 822, 823, 824, 823, 825, 824, 824, 825, 826, 825, 827, 826, + 826, 827, 828, 827, 829, 828, 828, 829, 830, 829, 831, 830, + 830, 831, 832, 831, 833, 832, 832, 833, 834, 833, 835, 834, + 834, 835, 836, 835, 837, 836, 836, 837, 838, 837, 839, 838, + 838, 839, 840, 839, 841, 840, 840, 841, 842, 841, 843, 842, + 842, 843, 844, 843, 845, 844, 844, 845, 846, 845, 847, 846, + 846, 847, 848, 847, 849, 848, 848, 849, 728, 849, 729, 728, + 728, 729, 726, 729, 727, 726, 726, 727, 724, 727, 725, 724, + 724, 725, 722, 725, 723, 722, 722, 723, 850, 723, 851, 850, + 850, 851, 792, 851, 793, 792, 792, 792, 790, 792, 790, 790, + 790, 790, 788, 790, 788, 788, 788, 788, 786, 788, 786, 786, + 786, 786, 780, 786, 780, 780, 780, 780, 778, 780, 778, 778, + 778, 778, 768, 778, 768, 768, 768, 768, 766, 768, 766, 766, + 766, 766, 764, 766, 764, 764, 764, 764, 762, 764, 762, 762, + 762, 762, 760, 762, 760, 760, 760, 760, 758, 760, 758, 758, + 758, 758, 798, 758, 798, 798, 798, 798, 800, 798, 800, 800, + 800, 800, 802, 800, 802, 802, 802, 802, 804, 802, 804, 804, + 804, 804, 806, 804, 806, 806, 806, 806, 808, 806, 808, 808, + 808, 808, 810, 808, 810, 810, 810, 810, 812, 810, 812, 812, + 812, 812, 814, 812, 814, 814, 814, 814, 816, 814, 816, 816, + 816, 816, 818, 816, 818, 818, 818, 818, 820, 818, 820, 820, + 820, 820, 822, 820, 822, 822, 822, 822, 824, 822, 824, 824, + 824, 824, 826, 824, 826, 826, 826, 826, 828, 826, 828, 828, + 828, 828, 830, 828, 830, 830, 830, 830, 832, 830, 832, 832, + 832, 832, 834, 832, 834, 834, 834, 834, 836, 834, 836, 836, + 836, 836, 838, 836, 838, 838, 838, 838, 840, 838, 840, 840, + 840, 840, 842, 840, 842, 842, 842, 842, 844, 842, 844, 844, + 844, 844, 846, 844, 846, 846, 846, 846, 848, 846, 848, 848, + 848, 848, 728, 848, 728, 728, 728, 728, 726, 728, 726, 726, + 726, 726, 724, 726, 724, 724, 724, 724, 722, 724, 722, 722, + 722, 722, 850, 722, 850, 850, 850, 850, 792, 850, 792, 792, + 852, 853, 854, 853, 855, 854, 854, 855, 856, 855, 857, 856, + 856, 857, 858, 857, 859, 858, 858, 859, 860, 859, 861, 860, + 860, 861, 862, 861, 863, 862, 862, 863, 864, 863, 865, 864, + 864, 865, 866, 865, 867, 866, 866, 867, 868, 867, 869, 868, + 868, 869, 870, 869, 871, 870, 870, 871, 852, 871, 853, 852, + 852, 852, 854, 852, 854, 854, 854, 854, 856, 854, 856, 856, + 856, 856, 858, 856, 858, 858, 858, 858, 860, 858, 860, 860, + 860, 860, 862, 860, 862, 862, 862, 862, 864, 862, 864, 864, + 864, 864, 866, 864, 866, 866, 866, 866, 868, 866, 868, 868, + 868, 868, 870, 868, 870, 870, 870, 870, 852, 870, 852, 852, + 864, 865, 862, 865, 863, 862, 862, 863, 872, 863, 873, 872, + 872, 873, 874, 873, 875, 874, 874, 875, 876, 875, 877, 876, + 876, 877, 878, 877, 879, 878, 878, 879, 880, 879, 881, 880, + 880, 881, 882, 881, 883, 882, 882, 883, 884, 883, 885, 884, + 884, 885, 886, 885, 887, 886, 886, 887, 888, 887, 889, 888, + 888, 889, 864, 889, 865, 864, 864, 864, 862, 864, 862, 862, + 862, 862, 872, 862, 872, 872, 872, 872, 874, 872, 874, 874, + 874, 874, 876, 874, 876, 876, 876, 876, 878, 876, 878, 878, + 878, 878, 880, 878, 880, 880, 880, 880, 882, 880, 882, 882, + 882, 882, 884, 882, 884, 884, 884, 884, 886, 884, 886, 886, + 886, 886, 888, 886, 888, 888, 888, 888, 864, 888, 864, 864, + 890, 891, 892, 891, 893, 892, 892, 893, 894, 893, 895, 894, + 894, 895, 896, 895, 897, 896, 896, 897, 898, 897, 899, 898, + 898, 899, 890, 899, 891, 890, 890, 890, 892, 890, 892, 892, + 892, 892, 894, 892, 894, 894, 894, 894, 896, 894, 896, 896, + 896, 896, 898, 896, 898, 898, 898, 898, 890, 898, 890, 890, + 900, 901, 902, 901, 903, 902, 902, 903, 904, 903, 905, 904, + 904, 905, 906, 905, 907, 906, 906, 907, 900, 907, 901, 900, + 900, 900, 902, 900, 902, 902, 902, 902, 904, 902, 904, 904, + 904, 904, 906, 904, 906, 906, 906, 906, 900, 906, 900, 900, + 908, 909, 910, 909, 911, 910, 910, 911, 912, 911, 163, 912, + 912, 163, 913, 163, 161, 913, 913, 161, 908, 161, 909, 908, + 908, 908, 910, 908, 910, 910, 910, 910, 912, 910, 912, 912, + 912, 912, 913, 912, 913, 913, 913, 913, 908, 913, 908, 908, + 914, 394, 915, 394, 889, 915, 915, 889, 916, 889, 887, 916, + 916, 887, 917, 887, 396, 917, 917, 396, 914, 396, 394, 914, + 914, 914, 915, 914, 915, 915, 915, 915, 916, 915, 916, 916, + 916, 916, 917, 916, 917, 917, 917, 917, 914, 917, 914, 914, + 918, 919, 920, 919, 921, 920, 920, 921, 900, 921, 901, 900, + 900, 901, 906, 901, 907, 906, 906, 907, 918, 907, 919, 918, + 918, 918, 920, 918, 920, 920, 920, 920, 900, 920, 900, 900, + 900, 900, 906, 900, 906, 906, 906, 906, 918, 906, 918, 918, + 910, 911, 908, 911, 909, 908, 908, 909, 922, 909, 923, 922, + 922, 923, 924, 923, 925, 924, 924, 925, 926, 925, 927, 926, + 926, 927, 910, 927, 911, 910, 910, 910, 908, 910, 908, 908, + 908, 908, 922, 908, 922, 922, 922, 922, 924, 922, 924, 924, + 924, 924, 926, 924, 926, 926, 926, 926, 910, 926, 910, 910, + 928, 929, 930, 929, 931, 930, 930, 931, 932, 931, 933, 932, + 932, 933, 934, 933, 935, 934, 934, 935, 904, 935, 905, 904, + 904, 905, 902, 905, 903, 902, 902, 903, 860, 903, 861, 860, + 860, 861, 858, 861, 859, 858, 858, 859, 936, 859, 937, 936, + 936, 937, 928, 937, 929, 928, 928, 928, 930, 928, 930, 930, + 930, 930, 932, 930, 932, 932, 932, 932, 934, 932, 934, 934, + 934, 934, 904, 934, 904, 904, 904, 904, 902, 904, 902, 902, + 902, 902, 860, 902, 860, 860, 860, 860, 858, 860, 858, 858, + 858, 858, 936, 858, 936, 936, 936, 936, 928, 936, 928, 928, + 918, 919, 938, 919, 939, 938, 938, 939, 940, 939, 941, 940, + 940, 941, 942, 941, 943, 942, 942, 943, 944, 943, 945, 944, + 944, 945, 946, 945, 947, 946, 946, 947, 948, 947, 949, 948, + 948, 949, 950, 949, 951, 950, 950, 951, 952, 951, 953, 952, + 952, 953, 954, 953, 955, 954, 954, 955, 956, 955, 957, 956, + 956, 957, 958, 957, 959, 958, 958, 959, 960, 959, 961, 960, + 960, 961, 962, 961, 963, 962, 962, 963, 964, 963, 965, 964, + 964, 965, 966, 965, 967, 966, 966, 967, 920, 967, 921, 920, + 920, 921, 918, 921, 919, 918, 918, 918, 938, 918, 938, 938, + 938, 938, 940, 938, 940, 940, 940, 940, 942, 940, 942, 942, + 942, 942, 944, 942, 944, 944, 944, 944, 946, 944, 946, 946, + 946, 946, 948, 946, 948, 948, 948, 948, 950, 948, 950, 950, + 950, 950, 952, 950, 952, 952, 952, 952, 954, 952, 954, 954, + 954, 954, 956, 954, 956, 956, 956, 956, 958, 956, 958, 958, + 958, 958, 960, 958, 960, 960, 960, 960, 962, 960, 962, 962, + 962, 962, 964, 962, 964, 964, 964, 964, 966, 964, 966, 966, + 966, 966, 920, 966, 920, 920, 920, 920, 918, 920, 918, 918, + 968, 969, 928, 969, 929, 928, 928, 929, 936, 929, 937, 936, + 936, 937, 970, 937, 971, 970, 970, 971, 972, 971, 973, 972, + 972, 973, 974, 973, 975, 974, 974, 975, 968, 975, 969, 968, + 968, 968, 928, 968, 928, 928, 928, 928, 936, 928, 936, 936, + 936, 936, 970, 936, 970, 970, 970, 970, 972, 970, 972, 972, + 972, 972, 974, 972, 974, 974, 974, 974, 968, 974, 968, 968, + 974, 975, 972, 975, 973, 972, 972, 973, 970, 973, 971, 970, + 970, 971, 852, 971, 853, 852, 852, 853, 870, 853, 871, 870, + 870, 871, 868, 871, 869, 868, 868, 869, 866, 869, 867, 866, + 866, 867, 976, 867, 977, 976, 976, 977, 978, 977, 979, 978, + 978, 979, 391, 979, 392, 391, 391, 392, 389, 392, 390, 389, + 389, 390, 974, 390, 975, 974, 974, 974, 972, 974, 972, 972, + 972, 972, 970, 972, 970, 970, 970, 970, 852, 970, 852, 852, + 852, 852, 870, 852, 870, 870, 870, 870, 868, 870, 868, 868, + 868, 868, 866, 868, 866, 866, 866, 866, 976, 866, 976, 976, + 976, 976, 978, 976, 978, 978, 978, 978, 391, 978, 391, 391, + 391, 391, 389, 391, 389, 389, 389, 389, 974, 389, 974, 974, + 399, 400, 397, 400, 398, 397, 397, 398, 980, 398, 981, 980, + 980, 981, 982, 981, 983, 982, 982, 983, 984, 983, 891, 984, + 984, 891, 985, 891, 899, 985, 985, 899, 986, 899, 987, 986, + 986, 987, 988, 987, 989, 988, 988, 989, 399, 989, 400, 399, + 399, 399, 397, 399, 397, 397, 397, 397, 980, 397, 980, 980, + 980, 980, 982, 980, 982, 982, 982, 982, 984, 982, 984, 984, + 984, 984, 985, 984, 985, 985, 985, 985, 986, 985, 986, 986, + 986, 986, 988, 986, 988, 988, 988, 988, 399, 988, 399, 399, + 990, 330, 991, 330, 992, 991, 991, 992, 993, 992, 994, 993, + 993, 994, 995, 994, 996, 995, 995, 996, 997, 996, 998, 997, + 997, 998, 999, 998, 332, 999, 999, 332, 990, 332, 330, 990, + 990, 990, 991, 990, 991, 991, 991, 991, 993, 991, 993, 993, + 993, 993, 995, 993, 995, 995, 995, 995, 997, 995, 997, 997, + 997, 997, 999, 997, 999, 999, 999, 999, 990, 999, 990, 990, + 997, 998, 995, 998, 996, 995, 995, 996, 1000, 996, 1001, 1000, + 1000, 1001, 930, 1001, 931, 930, 930, 931, 928, 931, 929, 928, + 928, 929, 968, 929, 969, 968, 968, 969, 997, 969, 998, 997, + 997, 997, 995, 997, 995, 995, 995, 995, 1000, 995, 1000, 1000, + 1000, 1000, 930, 1000, 930, 930, 930, 930, 928, 930, 928, 928, + 928, 928, 968, 928, 968, 968, 968, 968, 997, 968, 997, 997, + 1002, 1003, 1004, 1003, 1005, 1004, 1004, 1005, 1006, 1005, 1007, 1006, + 1006, 1007, 1008, 1007, 1009, 1008, 1008, 1009, 1010, 1009, 1011, 1010, + 1010, 1011, 1012, 1011, 1013, 1012, 1012, 1013, 1014, 1013, 1015, 1014, + 1014, 1015, 1016, 1015, 1017, 1016, 1016, 1017, 1018, 1017, 1019, 1018, + 1018, 1019, 1020, 1019, 1021, 1020, 1020, 1021, 1022, 1021, 1023, 1022, + 1022, 1023, 1024, 1023, 1025, 1024, 1024, 1025, 1026, 1025, 1027, 1026, + 1026, 1027, 1028, 1027, 1029, 1028, 1028, 1029, 1030, 1029, 1031, 1030, + 1030, 1031, 1002, 1031, 1003, 1002, 1002, 1002, 1004, 1002, 1004, 1004, + 1004, 1004, 1006, 1004, 1006, 1006, 1006, 1006, 1008, 1006, 1008, 1008, + 1008, 1008, 1010, 1008, 1010, 1010, 1010, 1010, 1012, 1010, 1012, 1012, + 1012, 1012, 1014, 1012, 1014, 1014, 1014, 1014, 1016, 1014, 1016, 1016, + 1016, 1016, 1018, 1016, 1018, 1018, 1018, 1018, 1020, 1018, 1020, 1020, + 1020, 1020, 1022, 1020, 1022, 1022, 1022, 1022, 1024, 1022, 1024, 1024, + 1024, 1024, 1026, 1024, 1026, 1026, 1026, 1026, 1028, 1026, 1028, 1028, + 1028, 1028, 1030, 1028, 1030, 1030, 1030, 1030, 1002, 1030, 1002, 1002, + 1032, 1033, 1034, 1033, 1035, 1034, 1034, 1035, 1036, 1035, 612, 1036, + 1036, 612, 1037, 612, 610, 1037, 1037, 610, 1032, 610, 1033, 1032, + 1032, 1032, 1034, 1032, 1034, 1034, 1034, 1034, 1036, 1034, 1036, 1036, + 1036, 1036, 1037, 1036, 1037, 1037, 1037, 1037, 1032, 1037, 1032, 1032, + 1037, 610, 1038, 610, 1039, 1038, 1038, 1039, 1040, 1039, 1041, 1040, + 1040, 1041, 1032, 1041, 1033, 1032, 1032, 1033, 1037, 1033, 610, 1037, + 1037, 1037, 1038, 1037, 1038, 1038, 1038, 1038, 1040, 1038, 1040, 1040, + 1040, 1040, 1032, 1040, 1032, 1032, 1032, 1032, 1037, 1032, 1037, 1037, + 609, 610, 607, 610, 608, 607, 607, 608, 1042, 608, 1043, 1042, + 1042, 1043, 1044, 1043, 1045, 1044, 1044, 1045, 1046, 1045, 1047, 1046, + 1046, 1047, 1048, 1047, 1039, 1048, 1048, 1039, 609, 1039, 610, 609, + 609, 609, 607, 609, 607, 607, 607, 607, 1042, 607, 1042, 1042, + 1042, 1042, 1044, 1042, 1044, 1044, 1044, 1044, 1046, 1044, 1046, 1046, + 1046, 1046, 1048, 1046, 1048, 1048, 1048, 1048, 609, 1048, 609, 609, + 1049, 1050, 1051, 1050, 1052, 1051, 1051, 1052, 1053, 1052, 1054, 1053, + 1053, 1054, 1055, 1054, 1056, 1055, 1055, 1056, 1057, 1056, 1058, 1057, + 1057, 1058, 1059, 1058, 1060, 1059, 1059, 1060, 1049, 1060, 1050, 1049, + 1049, 1049, 1051, 1049, 1051, 1051, 1051, 1051, 1053, 1051, 1053, 1053, + 1053, 1053, 1055, 1053, 1055, 1055, 1055, 1055, 1057, 1055, 1057, 1057, + 1057, 1057, 1059, 1057, 1059, 1059, 1059, 1059, 1049, 1059, 1049, 1049, + 1049, 1050, 1059, 1050, 1060, 1059, 1059, 1060, 1057, 1060, 1058, 1057, + 1057, 1058, 1008, 1058, 1009, 1008, 1008, 1009, 1006, 1009, 1007, 1006, + 1006, 1007, 1004, 1007, 1005, 1004, 1004, 1005, 1002, 1005, 1003, 1002, + 1002, 1003, 1061, 1003, 1062, 1061, 1061, 1062, 1049, 1062, 1050, 1049, + 1049, 1049, 1059, 1049, 1059, 1059, 1059, 1059, 1057, 1059, 1057, 1057, + 1057, 1057, 1008, 1057, 1008, 1008, 1008, 1008, 1006, 1008, 1006, 1006, + 1006, 1006, 1004, 1006, 1004, 1004, 1004, 1004, 1002, 1004, 1002, 1002, + 1002, 1002, 1061, 1002, 1061, 1061, 1061, 1061, 1049, 1061, 1049, 1049, + 1063, 1064, 1065, 1064, 1066, 1065, 1065, 1066, 1067, 1066, 1068, 1067, + 1067, 1068, 1069, 1068, 1070, 1069, 1069, 1070, 1071, 1070, 1072, 1071, + 1071, 1072, 1073, 1072, 1074, 1073, 1073, 1074, 1075, 1074, 1076, 1075, + 1075, 1076, 1077, 1076, 1078, 1077, 1077, 1078, 1079, 1078, 1080, 1079, + 1079, 1080, 1081, 1080, 1082, 1081, 1081, 1082, 1083, 1082, 1084, 1083, + 1083, 1084, 1063, 1084, 1064, 1063, 1063, 1063, 1065, 1063, 1065, 1065, + 1065, 1065, 1067, 1065, 1067, 1067, 1067, 1067, 1069, 1067, 1069, 1069, + 1069, 1069, 1071, 1069, 1071, 1071, 1071, 1071, 1073, 1071, 1073, 1073, + 1073, 1073, 1075, 1073, 1075, 1075, 1075, 1075, 1077, 1075, 1077, 1077, + 1077, 1077, 1079, 1077, 1079, 1079, 1079, 1079, 1081, 1079, 1081, 1081, + 1081, 1081, 1083, 1081, 1083, 1083, 1083, 1083, 1063, 1083, 1063, 1063, + 1085, 1086, 1087, 1086, 1088, 1087, 1087, 1088, 1083, 1088, 1084, 1083, + 1083, 1084, 1081, 1084, 1082, 1081, 1081, 1082, 1089, 1082, 1090, 1089, + 1089, 1090, 1085, 1090, 1086, 1085, 1085, 1085, 1087, 1085, 1087, 1087, + 1087, 1087, 1083, 1087, 1083, 1083, 1083, 1083, 1081, 1083, 1081, 1081, + 1081, 1081, 1089, 1081, 1089, 1089, 1089, 1089, 1085, 1089, 1085, 1085, + 1044, 1045, 1042, 1045, 1043, 1042, 1042, 1043, 1091, 1043, 1092, 1091, + 1091, 1092, 1093, 1092, 1094, 1093, 1093, 1094, 1095, 1094, 1096, 1095, + 1095, 1096, 1097, 1096, 1098, 1097, 1097, 1098, 1099, 1098, 1100, 1099, + 1099, 1100, 1101, 1100, 1102, 1101, 1101, 1102, 1103, 1102, 1104, 1103, + 1103, 1104, 1087, 1104, 1088, 1087, 1087, 1088, 1085, 1088, 1086, 1085, + 1085, 1086, 1105, 1086, 1106, 1105, 1105, 1106, 1107, 1106, 1108, 1107, + 1107, 1108, 1109, 1108, 1110, 1109, 1109, 1110, 1044, 1110, 1045, 1044, + 1044, 1044, 1042, 1044, 1042, 1042, 1042, 1042, 1091, 1042, 1091, 1091, + 1091, 1091, 1093, 1091, 1093, 1093, 1093, 1093, 1095, 1093, 1095, 1095, + 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1099, 1097, 1099, 1099, + 1099, 1099, 1101, 1099, 1101, 1101, 1101, 1101, 1103, 1101, 1103, 1103, + 1103, 1103, 1087, 1103, 1087, 1087, 1087, 1087, 1085, 1087, 1085, 1085, + 1085, 1085, 1105, 1085, 1105, 1105, 1105, 1105, 1107, 1105, 1107, 1107, + 1107, 1107, 1109, 1107, 1109, 1109, 1109, 1109, 1044, 1109, 1044, 1044, + 1065, 1066, 1063, 1066, 1064, 1063, 1063, 1064, 1111, 1064, 1112, 1111, + 1111, 1112, 1113, 1112, 1114, 1113, 1113, 1114, 1115, 1114, 1116, 1115, + 1115, 1116, 1117, 1116, 1118, 1117, 1117, 1118, 1119, 1118, 1120, 1119, + 1119, 1120, 1065, 1120, 1066, 1065, 1065, 1065, 1063, 1065, 1063, 1063, + 1063, 1063, 1111, 1063, 1111, 1111, 1111, 1111, 1113, 1111, 1113, 1113, + 1113, 1113, 1115, 1113, 1115, 1115, 1115, 1115, 1117, 1115, 1117, 1117, + 1117, 1117, 1119, 1117, 1119, 1119, 1119, 1119, 1065, 1119, 1065, 1065, + 1121, 1122, 1123, 1122, 1124, 1123, 1123, 1124, 1075, 1124, 1076, 1075, + 1075, 1076, 1073, 1076, 1074, 1073, 1073, 1074, 1125, 1074, 1126, 1125, + 1125, 1126, 1127, 1126, 1128, 1127, 1127, 1128, 1129, 1128, 1130, 1129, + 1129, 1130, 1115, 1130, 1116, 1115, 1115, 1116, 1113, 1116, 1114, 1113, + 1113, 1114, 1121, 1114, 1122, 1121, 1121, 1121, 1123, 1121, 1123, 1123, + 1123, 1123, 1075, 1123, 1075, 1075, 1075, 1075, 1073, 1075, 1073, 1073, + 1073, 1073, 1125, 1073, 1125, 1125, 1125, 1125, 1127, 1125, 1127, 1127, + 1127, 1127, 1129, 1127, 1129, 1129, 1129, 1129, 1115, 1129, 1115, 1115, + 1115, 1115, 1113, 1115, 1113, 1113, 1113, 1113, 1121, 1113, 1121, 1121, + 1123, 1124, 1121, 1124, 1122, 1121, 1121, 1122, 1055, 1122, 1056, 1055, + 1055, 1056, 1053, 1056, 1054, 1053, 1053, 1054, 1123, 1054, 1124, 1123, + 1123, 1123, 1121, 1123, 1121, 1121, 1121, 1121, 1055, 1121, 1055, 1055, + 1055, 1055, 1053, 1055, 1053, 1053, 1053, 1053, 1123, 1053, 1123, 1123, + 1131, 1132, 1133, 1132, 1134, 1133, 1133, 1134, 1135, 1134, 1136, 1135, + 1135, 1136, 1137, 1136, 1138, 1137, 1137, 1138, 1139, 1138, 1140, 1139, + 1139, 1140, 1141, 1140, 1142, 1141, 1141, 1142, 1131, 1142, 1132, 1131, + 1131, 1131, 1133, 1131, 1133, 1133, 1133, 1133, 1135, 1133, 1135, 1135, + 1135, 1135, 1137, 1135, 1137, 1137, 1137, 1137, 1139, 1137, 1139, 1139, + 1139, 1139, 1141, 1139, 1141, 1141, 1141, 1141, 1131, 1141, 1131, 1131, + 1143, 1144, 1141, 1144, 1142, 1141, 1141, 1142, 1139, 1142, 1140, 1139, + 1139, 1140, 1145, 1140, 1146, 1145, 1145, 1146, 1147, 1146, 1148, 1147, + 1147, 1148, 1149, 1148, 1150, 1149, 1149, 1150, 1151, 1150, 1152, 1151, + 1151, 1152, 1153, 1152, 1154, 1153, 1153, 1154, 1155, 1154, 1156, 1155, + 1155, 1156, 1143, 1156, 1144, 1143, 1143, 1143, 1141, 1143, 1141, 1141, + 1141, 1141, 1139, 1141, 1139, 1139, 1139, 1139, 1145, 1139, 1145, 1145, + 1145, 1145, 1147, 1145, 1147, 1147, 1147, 1147, 1149, 1147, 1149, 1149, + 1149, 1149, 1151, 1149, 1151, 1151, 1151, 1151, 1153, 1151, 1153, 1153, + 1153, 1153, 1155, 1153, 1155, 1155, 1155, 1155, 1143, 1155, 1143, 1143, + 409, 410, 407, 410, 408, 407, 407, 408, 1157, 408, 1158, 1157, + 1157, 1158, 1159, 1158, 1160, 1159, 1159, 1160, 1135, 1160, 1136, 1135, + 1135, 1136, 1133, 1136, 1134, 1133, 1133, 1134, 1161, 1134, 1162, 1161, + 1161, 1162, 409, 1162, 410, 409, 409, 409, 407, 409, 407, 407, + 407, 407, 1157, 407, 1157, 1157, 1157, 1157, 1159, 1157, 1159, 1159, + 1159, 1159, 1135, 1159, 1135, 1135, 1135, 1135, 1133, 1135, 1133, 1133, + 1133, 1133, 1161, 1133, 1161, 1161, 1161, 1161, 409, 1161, 409, 409, + 1163, 1164, 1165, 1164, 1166, 1165, 1165, 1166, 1167, 1166, 1168, 1167, + 1167, 1168, 1169, 1168, 1170, 1169, 1169, 1170, 1171, 1170, 1172, 1171, + 1171, 1172, 1173, 1172, 1174, 1173, 1173, 1174, 1175, 1174, 1176, 1175, + 1175, 1176, 1177, 1176, 1178, 1177, 1177, 1178, 1179, 1178, 1180, 1179, + 1179, 1180, 1181, 1180, 1182, 1181, 1181, 1182, 1183, 1182, 1184, 1183, + 1183, 1184, 1185, 1184, 1186, 1185, 1185, 1186, 1187, 1186, 1188, 1187, + 1187, 1188, 1189, 1188, 1190, 1189, 1189, 1190, 1191, 1190, 1192, 1191, + 1191, 1192, 1193, 1192, 1194, 1193, 1193, 1194, 1195, 1194, 1196, 1195, + 1195, 1196, 1197, 1196, 1198, 1197, 1197, 1198, 1199, 1198, 1200, 1199, + 1199, 1200, 1201, 1200, 1202, 1201, 1201, 1202, 1203, 1202, 1204, 1203, + 1203, 1204, 1205, 1204, 1206, 1205, 1205, 1206, 1207, 1206, 1208, 1207, + 1207, 1208, 1209, 1208, 1210, 1209, 1209, 1210, 1211, 1210, 1212, 1211, + 1211, 1212, 1213, 1212, 1214, 1213, 1213, 1214, 1215, 1214, 1216, 1215, + 1215, 1216, 1217, 1216, 1218, 1217, 1217, 1218, 1219, 1218, 1220, 1219, + 1219, 1220, 1221, 1220, 1222, 1221, 1221, 1222, 1223, 1222, 1224, 1223, + 1223, 1224, 1225, 1224, 1226, 1225, 1225, 1226, 1227, 1226, 1228, 1227, + 1227, 1228, 1229, 1228, 1230, 1229, 1229, 1230, 1231, 1230, 1232, 1231, + 1231, 1232, 1233, 1232, 1234, 1233, 1233, 1234, 1235, 1234, 1236, 1235, + 1235, 1236, 1237, 1236, 1238, 1237, 1237, 1238, 1239, 1238, 1240, 1239, + 1239, 1240, 1241, 1240, 1242, 1241, 1241, 1242, 1243, 1242, 1244, 1243, + 1243, 1244, 1245, 1244, 1246, 1245, 1245, 1246, 1247, 1246, 1248, 1247, + 1247, 1248, 1249, 1248, 1250, 1249, 1249, 1250, 1251, 1250, 1252, 1251, + 1251, 1252, 1253, 1252, 1254, 1253, 1253, 1254, 1255, 1254, 1256, 1255, + 1255, 1256, 1257, 1256, 1258, 1257, 1257, 1258, 1259, 1258, 1260, 1259, + 1259, 1260, 1261, 1260, 1262, 1261, 1261, 1262, 1263, 1262, 1264, 1263, + 1263, 1264, 1265, 1264, 1266, 1265, 1265, 1266, 1267, 1266, 1268, 1267, + 1267, 1268, 1269, 1268, 1270, 1269, 1269, 1270, 1271, 1270, 1272, 1271, + 1271, 1272, 1273, 1272, 1274, 1273, 1273, 1274, 1275, 1274, 1276, 1275, + 1275, 1276, 1277, 1276, 1278, 1277, 1277, 1278, 1279, 1278, 1280, 1279, + 1279, 1280, 1281, 1280, 1282, 1281, 1281, 1282, 1283, 1282, 1284, 1283, + 1283, 1284, 1285, 1284, 1286, 1285, 1285, 1286, 1287, 1286, 1288, 1287, + 1287, 1288, 1289, 1288, 1290, 1289, 1289, 1290, 1291, 1290, 1292, 1291, + 1291, 1292, 1293, 1292, 1294, 1293, 1293, 1294, 1295, 1294, 1296, 1295, + 1295, 1296, 1163, 1296, 1164, 1163, 1163, 1163, 1165, 1163, 1165, 1165, + 1165, 1165, 1167, 1165, 1167, 1167, 1167, 1167, 1169, 1167, 1169, 1169, + 1169, 1169, 1171, 1169, 1171, 1171, 1171, 1171, 1173, 1171, 1173, 1173, + 1173, 1173, 1175, 1173, 1175, 1175, 1175, 1175, 1177, 1175, 1177, 1177, + 1177, 1177, 1179, 1177, 1179, 1179, 1179, 1179, 1181, 1179, 1181, 1181, + 1181, 1181, 1183, 1181, 1183, 1183, 1183, 1183, 1185, 1183, 1185, 1185, + 1185, 1185, 1187, 1185, 1187, 1187, 1187, 1187, 1189, 1187, 1189, 1189, + 1189, 1189, 1191, 1189, 1191, 1191, 1191, 1191, 1193, 1191, 1193, 1193, + 1193, 1193, 1195, 1193, 1195, 1195, 1195, 1195, 1197, 1195, 1197, 1197, + 1197, 1197, 1199, 1197, 1199, 1199, 1199, 1199, 1201, 1199, 1201, 1201, + 1201, 1201, 1203, 1201, 1203, 1203, 1203, 1203, 1205, 1203, 1205, 1205, + 1205, 1205, 1207, 1205, 1207, 1207, 1207, 1207, 1209, 1207, 1209, 1209, + 1209, 1209, 1211, 1209, 1211, 1211, 1211, 1211, 1213, 1211, 1213, 1213, + 1213, 1213, 1215, 1213, 1215, 1215, 1215, 1215, 1217, 1215, 1217, 1217, + 1217, 1217, 1219, 1217, 1219, 1219, 1219, 1219, 1221, 1219, 1221, 1221, + 1221, 1221, 1223, 1221, 1223, 1223, 1223, 1223, 1225, 1223, 1225, 1225, + 1225, 1225, 1227, 1225, 1227, 1227, 1227, 1227, 1229, 1227, 1229, 1229, + 1229, 1229, 1231, 1229, 1231, 1231, 1231, 1231, 1233, 1231, 1233, 1233, + 1233, 1233, 1235, 1233, 1235, 1235, 1235, 1235, 1237, 1235, 1237, 1237, + 1237, 1237, 1239, 1237, 1239, 1239, 1239, 1239, 1241, 1239, 1241, 1241, + 1241, 1241, 1243, 1241, 1243, 1243, 1243, 1243, 1245, 1243, 1245, 1245, + 1245, 1245, 1247, 1245, 1247, 1247, 1247, 1247, 1249, 1247, 1249, 1249, + 1249, 1249, 1251, 1249, 1251, 1251, 1251, 1251, 1253, 1251, 1253, 1253, + 1253, 1253, 1255, 1253, 1255, 1255, 1255, 1255, 1257, 1255, 1257, 1257, + 1257, 1257, 1259, 1257, 1259, 1259, 1259, 1259, 1261, 1259, 1261, 1261, + 1261, 1261, 1263, 1261, 1263, 1263, 1263, 1263, 1265, 1263, 1265, 1265, + 1265, 1265, 1267, 1265, 1267, 1267, 1267, 1267, 1269, 1267, 1269, 1269, + 1269, 1269, 1271, 1269, 1271, 1271, 1271, 1271, 1273, 1271, 1273, 1273, + 1273, 1273, 1275, 1273, 1275, 1275, 1275, 1275, 1277, 1275, 1277, 1277, + 1277, 1277, 1279, 1277, 1279, 1279, 1279, 1279, 1281, 1279, 1281, 1281, + 1281, 1281, 1283, 1281, 1283, 1283, 1283, 1283, 1285, 1283, 1285, 1285, + 1285, 1285, 1287, 1285, 1287, 1287, 1287, 1287, 1289, 1287, 1289, 1289, + 1289, 1289, 1291, 1289, 1291, 1291, 1291, 1291, 1293, 1291, 1293, 1293, + 1293, 1293, 1295, 1293, 1295, 1295, 1295, 1295, 1163, 1295, 1163, 1163, + 1297, 1298, 1299, 1298, 1300, 1299, 1299, 1300, 1301, 1300, 1302, 1301, + 1301, 1302, 1303, 1302, 1304, 1303, 1303, 1304, 1305, 1304, 1306, 1305, + 1305, 1306, 1307, 1306, 1308, 1307, 1307, 1308, 1309, 1308, 1310, 1309, + 1309, 1310, 1311, 1310, 1312, 1311, 1311, 1312, 1313, 1312, 1314, 1313, + 1313, 1314, 1315, 1314, 1316, 1315, 1315, 1316, 1297, 1316, 1298, 1297, + 1297, 1297, 1299, 1297, 1299, 1299, 1299, 1299, 1301, 1299, 1301, 1301, + 1301, 1301, 1303, 1301, 1303, 1303, 1303, 1303, 1305, 1303, 1305, 1305, + 1305, 1305, 1307, 1305, 1307, 1307, 1307, 1307, 1309, 1307, 1309, 1309, + 1309, 1309, 1311, 1309, 1311, 1311, 1311, 1311, 1313, 1311, 1313, 1313, + 1313, 1313, 1315, 1313, 1315, 1315, 1315, 1315, 1297, 1315, 1297, 1297, + 1317, 1318, 1319, 1318, 1320, 1319, 1319, 1320, 1321, 1320, 1322, 1321, + 1321, 1322, 1323, 1322, 1324, 1323, 1323, 1324, 1317, 1324, 1318, 1317, + 1317, 1317, 1319, 1317, 1319, 1319, 1319, 1319, 1321, 1319, 1321, 1321, + 1321, 1321, 1323, 1321, 1323, 1323, 1323, 1323, 1317, 1323, 1317, 1317, + 1325, 1324, 1326, 1324, 1322, 1326, 1326, 1322, 1327, 1322, 1328, 1327, + 1327, 1328, 1329, 1328, 1330, 1329, 1329, 1330, 1331, 1330, 1332, 1331, + 1331, 1332, 1325, 1332, 1324, 1325, 1325, 1325, 1326, 1325, 1326, 1326, + 1326, 1326, 1327, 1326, 1327, 1327, 1327, 1327, 1329, 1327, 1329, 1329, + 1329, 1329, 1331, 1329, 1331, 1331, 1331, 1331, 1325, 1331, 1325, 1325, + 1333, 1334, 1335, 1334, 1336, 1335, 1335, 1336, 1337, 1336, 1338, 1337, + 1337, 1338, 1339, 1338, 1306, 1339, 1339, 1306, 1340, 1306, 1304, 1340, + 1340, 1304, 1341, 1304, 1342, 1341, 1341, 1342, 1333, 1342, 1334, 1333, + 1333, 1333, 1335, 1333, 1335, 1335, 1335, 1335, 1337, 1335, 1337, 1337, + 1337, 1337, 1339, 1337, 1339, 1339, 1339, 1339, 1340, 1339, 1340, 1340, + 1340, 1340, 1341, 1340, 1341, 1341, 1341, 1341, 1333, 1341, 1333, 1333, + 1331, 1332, 1329, 1332, 1330, 1329, 1329, 1330, 1327, 1330, 1328, 1327, + 1327, 1328, 1343, 1328, 1344, 1343, 1343, 1344, 1345, 1344, 1346, 1345, + 1345, 1346, 1347, 1346, 1348, 1347, 1347, 1348, 1349, 1348, 1350, 1349, + 1349, 1350, 1351, 1350, 1352, 1351, 1351, 1352, 1331, 1352, 1332, 1331, + 1331, 1331, 1329, 1331, 1329, 1329, 1329, 1329, 1327, 1329, 1327, 1327, + 1327, 1327, 1343, 1327, 1343, 1343, 1343, 1343, 1345, 1343, 1345, 1345, + 1345, 1345, 1347, 1345, 1347, 1347, 1347, 1347, 1349, 1347, 1349, 1349, + 1349, 1349, 1351, 1349, 1351, 1351, 1351, 1351, 1331, 1351, 1331, 1331, + 1531, 1532, 1533, 1532, 1534, 1533, 1533, 1534, 1535, 1534, 1536, 1535, + 1535, 1536, 1537, 1536, 1538, 1537, 1537, 1538, 1539, 1538, 1540, 1539, + 1539, 1540, 1541, 1540, 1542, 1541, 1541, 1542, 1543, 1542, 1544, 1543, + 1543, 1544, 1545, 1544, 1546, 1545, 1545, 1546, 1547, 1546, 1548, 1547, + 1547, 1548, 1549, 1548, 1550, 1549, 1549, 1550, 1531, 1550, 1532, 1531, + 1531, 1531, 1533, 1531, 1533, 1533, 1533, 1533, 1535, 1533, 1535, 1535, + 1535, 1535, 1537, 1535, 1537, 1537, 1537, 1537, 1539, 1537, 1539, 1539, + 1539, 1539, 1541, 1539, 1541, 1541, 1541, 1541, 1543, 1541, 1543, 1543, + 1543, 1543, 1545, 1543, 1545, 1545, 1545, 1545, 1547, 1545, 1547, 1547, + 1547, 1547, 1549, 1547, 1549, 1549, 1549, 1549, 1531, 1549, 1531, 1531, + 1551, 1552, 1553, 1552, 1554, 1553, 1553, 1554, 1555, 1554, 1556, 1555, + 1555, 1556, 1557, 1556, 1558, 1557, 1557, 1558, 1559, 1558, 1560, 1559, + 1559, 1560, 1551, 1560, 1552, 1551, 1551, 1551, 1553, 1551, 1553, 1553, + 1553, 1553, 1555, 1553, 1555, 1555, 1555, 1555, 1557, 1555, 1557, 1557, + 1557, 1557, 1559, 1557, 1559, 1559, 1559, 1559, 1551, 1559, 1551, 1551, + 1561, 1540, 1562, 1540, 1563, 1562, 1562, 1563, 1564, 1563, 1565, 1564, + 1564, 1565, 1566, 1565, 1567, 1566, 1566, 1567, 1568, 1567, 1569, 1568, + 1568, 1569, 1570, 1569, 1571, 1570, 1570, 1571, 1572, 1571, 1542, 1572, + 1572, 1542, 1561, 1542, 1540, 1561, 1561, 1561, 1562, 1561, 1562, 1562, + 1562, 1562, 1564, 1562, 1564, 1564, 1564, 1564, 1566, 1564, 1566, 1566, + 1566, 1566, 1568, 1566, 1568, 1568, 1568, 1568, 1570, 1568, 1570, 1570, + 1570, 1570, 1572, 1570, 1572, 1572, 1572, 1572, 1561, 1572, 1561, 1561, + 1553, 1554, 1551, 1554, 1552, 1551, 1551, 1552, 1573, 1552, 1574, 1573, + 1573, 1574, 1575, 1574, 1576, 1575, 1575, 1576, 1577, 1576, 1578, 1577, + 1577, 1578, 1568, 1578, 1569, 1568, 1568, 1569, 1566, 1569, 1567, 1566, + 1566, 1567, 1579, 1567, 1580, 1579, 1579, 1580, 1581, 1580, 1582, 1581, + 1581, 1582, 1553, 1582, 1554, 1553, 1553, 1553, 1551, 1553, 1551, 1551, + 1551, 1551, 1573, 1551, 1573, 1573, 1573, 1573, 1575, 1573, 1575, 1575, + 1575, 1575, 1577, 1575, 1577, 1577, 1577, 1577, 1568, 1577, 1568, 1568, + 1568, 1568, 1566, 1568, 1566, 1566, 1566, 1566, 1579, 1566, 1579, 1579, + 1579, 1579, 1581, 1579, 1581, 1581, 1581, 1581, 1553, 1581, 1553, 1553, + 1583, 1584, 1585, 1584, 1586, 1585, 1585, 1586, 1587, 1586, 1588, 1587, + 1587, 1588, 1589, 1588, 1590, 1589, 1589, 1590, 1591, 1590, 1592, 1591, + 1591, 1592, 1593, 1592, 1594, 1593, 1593, 1594, 1595, 1594, 1596, 1595, + 1595, 1596, 1597, 1596, 1598, 1597, 1597, 1598, 1583, 1598, 1584, 1583, + 1583, 1583, 1585, 1583, 1585, 1585, 1585, 1585, 1587, 1585, 1587, 1587, + 1587, 1587, 1589, 1587, 1589, 1589, 1589, 1589, 1591, 1589, 1591, 1591, + 1591, 1591, 1593, 1591, 1593, 1593, 1593, 1593, 1595, 1593, 1595, 1595, + 1595, 1595, 1597, 1595, 1597, 1597, 1597, 1597, 1583, 1597, 1583, 1583, + 1559, 1560, 1583, 1560, 1584, 1583, 1583, 1584, 1597, 1584, 1598, 1597, + 1597, 1598, 1595, 1598, 1596, 1595, 1595, 1596, 1593, 1596, 1594, 1593, + 1593, 1594, 1599, 1594, 1600, 1599, 1599, 1600, 1575, 1600, 1576, 1575, + 1575, 1576, 1573, 1576, 1574, 1573, 1573, 1574, 1551, 1574, 1552, 1551, + 1551, 1552, 1559, 1552, 1560, 1559, 1559, 1559, 1583, 1559, 1583, 1583, + 1583, 1583, 1597, 1583, 1597, 1597, 1597, 1597, 1595, 1597, 1595, 1595, + 1595, 1595, 1593, 1595, 1593, 1593, 1593, 1593, 1599, 1593, 1599, 1599, + 1599, 1599, 1575, 1599, 1575, 1575, 1575, 1575, 1573, 1575, 1573, 1573, + 1573, 1573, 1551, 1573, 1551, 1551, 1551, 1551, 1559, 1551, 1559, 1559, + 1601, 1602, 1603, 1602, 1604, 1603, 1603, 1604, 1605, 1604, 1606, 1605, + 1605, 1606, 1607, 1606, 1608, 1607, 1607, 1608, 1609, 1608, 1610, 1609, + 1609, 1610, 1611, 1610, 1538, 1611, 1611, 1538, 1612, 1538, 1536, 1612, + 1612, 1536, 1613, 1536, 1534, 1613, 1613, 1534, 1614, 1534, 1615, 1614, + 1614, 1615, 1616, 1615, 1617, 1616, 1616, 1617, 1618, 1617, 1619, 1618, + 1618, 1619, 1620, 1619, 1621, 1620, 1620, 1621, 1622, 1621, 1623, 1622, + 1622, 1623, 1624, 1623, 1625, 1624, 1624, 1625, 1626, 1625, 1627, 1626, + 1626, 1627, 1628, 1627, 1629, 1628, 1628, 1629, 1601, 1629, 1602, 1601, + 1601, 1601, 1603, 1601, 1603, 1603, 1603, 1603, 1605, 1603, 1605, 1605, + 1605, 1605, 1607, 1605, 1607, 1607, 1607, 1607, 1609, 1607, 1609, 1609, + 1609, 1609, 1611, 1609, 1611, 1611, 1611, 1611, 1612, 1611, 1612, 1612, + 1612, 1612, 1613, 1612, 1613, 1613, 1613, 1613, 1614, 1613, 1614, 1614, + 1614, 1614, 1616, 1614, 1616, 1616, 1616, 1616, 1618, 1616, 1618, 1618, + 1618, 1618, 1620, 1618, 1620, 1620, 1620, 1620, 1622, 1620, 1622, 1622, + 1622, 1622, 1624, 1622, 1624, 1624, 1624, 1624, 1626, 1624, 1626, 1626, + 1626, 1626, 1628, 1626, 1628, 1628, 1628, 1628, 1601, 1628, 1601, 1601, + 1630, 1631, 1632, 1631, 1633, 1632, 1632, 1633, 1634, 1633, 1635, 1634, + 1634, 1635, 1636, 1635, 1627, 1636, 1636, 1627, 1637, 1627, 1625, 1637, + 1637, 1625, 1638, 1625, 1623, 1638, 1638, 1623, 1639, 1623, 1621, 1639, + 1639, 1621, 1640, 1621, 1619, 1640, 1640, 1619, 1630, 1619, 1631, 1630, + 1630, 1630, 1632, 1630, 1632, 1632, 1632, 1632, 1634, 1632, 1634, 1634, + 1634, 1634, 1636, 1634, 1636, 1636, 1636, 1636, 1637, 1636, 1637, 1637, + 1637, 1637, 1638, 1637, 1638, 1638, 1638, 1638, 1639, 1638, 1639, 1639, + 1639, 1639, 1640, 1639, 1640, 1640, 1640, 1640, 1630, 1640, 1630, 1630, + 1641, 1642, 1643, 1642, 1644, 1643, 1643, 1644, 1645, 1644, 1646, 1645, + 1645, 1646, 1647, 1646, 1648, 1647, 1647, 1648, 1649, 1648, 1650, 1649, + 1649, 1650, 1651, 1650, 1652, 1651, 1651, 1652, 1653, 1652, 1654, 1653, + 1653, 1654, 1655, 1654, 1656, 1655, 1655, 1656, 1657, 1656, 1658, 1657, + 1657, 1658, 1659, 1658, 1660, 1659, 1659, 1660, 1641, 1660, 1642, 1641, + 1641, 1641, 1643, 1641, 1643, 1643, 1643, 1643, 1645, 1643, 1645, 1645, + 1645, 1645, 1647, 1645, 1647, 1647, 1647, 1647, 1649, 1647, 1649, 1649, + 1649, 1649, 1651, 1649, 1651, 1651, 1651, 1651, 1653, 1651, 1653, 1653, + 1653, 1653, 1655, 1653, 1655, 1655, 1655, 1655, 1657, 1655, 1657, 1657, + 1657, 1657, 1659, 1657, 1659, 1659, 1659, 1659, 1641, 1659, 1641, 1641, + 1653, 1654, 1661, 1654, 1662, 1661, 1661, 1662, 221, 1662, 222, 221, + 221, 222, 219, 222, 220, 219, 219, 220, 1663, 220, 1664, 1663, + 1663, 1664, 1665, 1664, 1666, 1665, 1665, 1666, 211, 1666, 212, 211, + 211, 212, 209, 212, 210, 209, 209, 210, 1667, 210, 1668, 1667, + 1667, 1668, 1655, 1668, 1656, 1655, 1655, 1656, 1653, 1656, 1654, 1653, + 1653, 1653, 1661, 1653, 1661, 1661, 1661, 1661, 221, 1661, 221, 221, + 221, 221, 219, 221, 219, 219, 219, 219, 1663, 219, 1663, 1663, + 1663, 1663, 1665, 1663, 1665, 1665, 1665, 1665, 211, 1665, 211, 211, + 211, 211, 209, 211, 209, 209, 209, 209, 1667, 209, 1667, 1667, + 1667, 1667, 1655, 1667, 1655, 1655, 1655, 1655, 1653, 1655, 1653, 1653, + 1641, 1642, 1659, 1642, 1660, 1659, 1659, 1660, 1669, 1660, 1670, 1669, + 1669, 1670, 1671, 1670, 1672, 1671, 1671, 1672, 1673, 1672, 1674, 1673, + 1673, 1674, 1675, 1674, 1676, 1675, 1675, 1676, 1649, 1676, 1650, 1649, + 1649, 1650, 1647, 1650, 1648, 1647, 1647, 1648, 1677, 1648, 1678, 1677, + 1677, 1678, 1679, 1678, 1680, 1679, 1679, 1680, 1641, 1680, 1642, 1641, + 1641, 1641, 1659, 1641, 1659, 1659, 1659, 1659, 1669, 1659, 1669, 1669, + 1669, 1669, 1671, 1669, 1671, 1671, 1671, 1671, 1673, 1671, 1673, 1673, + 1673, 1673, 1675, 1673, 1675, 1675, 1675, 1675, 1649, 1675, 1649, 1649, + 1649, 1649, 1647, 1649, 1647, 1647, 1647, 1647, 1677, 1647, 1677, 1677, + 1677, 1677, 1679, 1677, 1679, 1679, 1679, 1679, 1641, 1679, 1641, 1641, + 1673, 1674, 1671, 1674, 1672, 1671, 1671, 1672, 1681, 1672, 1682, 1681, + 1681, 1682, 1683, 1682, 1684, 1683, 1683, 1684, 1685, 1684, 1686, 1685, + 1685, 1686, 1687, 1686, 1688, 1687, 1687, 1688, 1689, 1688, 1690, 1689, + 1689, 1690, 1691, 1690, 1692, 1691, 1691, 1692, 1693, 1692, 1694, 1693, + 1693, 1694, 1695, 1694, 1696, 1695, 1695, 1696, 1673, 1696, 1674, 1673, + 1673, 1673, 1671, 1673, 1671, 1671, 1671, 1671, 1681, 1671, 1681, 1681, + 1681, 1681, 1683, 1681, 1683, 1683, 1683, 1683, 1685, 1683, 1685, 1685, + 1685, 1685, 1687, 1685, 1687, 1687, 1687, 1687, 1689, 1687, 1689, 1689, + 1689, 1689, 1691, 1689, 1691, 1691, 1691, 1691, 1693, 1691, 1693, 1693, + 1693, 1693, 1695, 1693, 1695, 1695, 1695, 1695, 1673, 1695, 1673, 1673, + 1697, 1698, 1699, 1698, 1700, 1699, 1699, 1700, 1701, 1700, 1702, 1701, + 1701, 1702, 1703, 1702, 1704, 1703, 1703, 1704, 1705, 1704, 1706, 1705, + 1705, 1706, 1707, 1706, 1708, 1707, 1707, 1708, 1709, 1708, 1710, 1709, + 1709, 1710, 1711, 1710, 1712, 1711, 1711, 1712, 1713, 1712, 1714, 1713, + 1713, 1714, 1715, 1714, 1716, 1715, 1715, 1716, 1717, 1716, 1718, 1717, + 1717, 1718, 1719, 1718, 1720, 1719, 1719, 1720, 1721, 1720, 1722, 1721, + 1721, 1722, 1723, 1722, 1724, 1723, 1723, 1724, 1725, 1724, 1726, 1725, + 1725, 1726, 1727, 1726, 1728, 1727, 1727, 1728, 1729, 1728, 1730, 1729, + 1729, 1730, 1697, 1730, 1698, 1697, 1697, 1697, 1699, 1697, 1699, 1699, + 1699, 1699, 1701, 1699, 1701, 1701, 1701, 1701, 1703, 1701, 1703, 1703, + 1703, 1703, 1705, 1703, 1705, 1705, 1705, 1705, 1707, 1705, 1707, 1707, + 1707, 1707, 1709, 1707, 1709, 1709, 1709, 1709, 1711, 1709, 1711, 1711, + 1711, 1711, 1713, 1711, 1713, 1713, 1713, 1713, 1715, 1713, 1715, 1715, + 1715, 1715, 1717, 1715, 1717, 1717, 1717, 1717, 1719, 1717, 1719, 1719, + 1719, 1719, 1721, 1719, 1721, 1721, 1721, 1721, 1723, 1721, 1723, 1723, + 1723, 1723, 1725, 1723, 1725, 1725, 1725, 1725, 1727, 1725, 1727, 1727, + 1727, 1727, 1729, 1727, 1729, 1729, 1729, 1729, 1697, 1729, 1697, 1697, + 1731, 1724, 1732, 1724, 1722, 1732, 1732, 1722, 1733, 1722, 1720, 1733, + 1733, 1720, 1734, 1720, 1718, 1734, 1734, 1718, 1731, 1718, 1724, 1731, + 1731, 1731, 1732, 1731, 1732, 1732, 1732, 1732, 1733, 1732, 1733, 1733, + 1733, 1733, 1734, 1733, 1734, 1734, 1734, 1734, 1731, 1734, 1731, 1731, + 1735, 1714, 1736, 1714, 1712, 1736, 1736, 1712, 1737, 1712, 1710, 1737, + 1737, 1710, 1738, 1710, 1708, 1738, 1738, 1708, 1735, 1708, 1714, 1735, + 1735, 1735, 1736, 1735, 1736, 1736, 1736, 1736, 1737, 1736, 1737, 1737, + 1737, 1737, 1738, 1737, 1738, 1738, 1738, 1738, 1735, 1738, 1735, 1735, + 1739, 1706, 1740, 1706, 1704, 1740, 1740, 1704, 1741, 1704, 1702, 1741, + 1741, 1702, 1742, 1702, 1700, 1742, 1742, 1700, 1743, 1700, 1744, 1743, + 1743, 1744, 1745, 1744, 1746, 1745, 1745, 1746, 1739, 1746, 1706, 1739, + 1739, 1739, 1740, 1739, 1740, 1740, 1740, 1740, 1741, 1740, 1741, 1741, + 1741, 1741, 1742, 1741, 1742, 1742, 1742, 1742, 1743, 1742, 1743, 1743, + 1743, 1743, 1745, 1743, 1745, 1745, 1745, 1745, 1739, 1745, 1739, 1739, + 1747, 1748, 1749, 1748, 1750, 1749, 1749, 1750, 1751, 1750, 1752, 1751, + 1751, 1752, 1753, 1752, 1754, 1753, 1753, 1754, 1755, 1754, 1756, 1755, + 1755, 1756, 1757, 1756, 1758, 1757, 1757, 1758, 1759, 1758, 1760, 1759, + 1759, 1760, 1761, 1760, 1762, 1761, 1761, 1762, 1763, 1762, 1764, 1763, + 1763, 1764, 1765, 1764, 1766, 1765, 1765, 1766, 1693, 1766, 1694, 1693, + 1693, 1694, 1691, 1694, 1692, 1691, 1691, 1692, 1685, 1692, 1686, 1685, + 1685, 1686, 1683, 1686, 1684, 1683, 1683, 1684, 1767, 1684, 1768, 1767, + 1767, 1768, 1769, 1768, 1770, 1769, 1769, 1770, 1747, 1770, 1748, 1747, + 1747, 1747, 1749, 1747, 1749, 1749, 1749, 1749, 1751, 1749, 1751, 1751, + 1751, 1751, 1753, 1751, 1753, 1753, 1753, 1753, 1755, 1753, 1755, 1755, + 1755, 1755, 1757, 1755, 1757, 1757, 1757, 1757, 1759, 1757, 1759, 1759, + 1759, 1759, 1761, 1759, 1761, 1761, 1761, 1761, 1763, 1761, 1763, 1763, + 1763, 1763, 1765, 1763, 1765, 1765, 1765, 1765, 1693, 1765, 1693, 1693, + 1693, 1693, 1691, 1693, 1691, 1691, 1691, 1691, 1685, 1691, 1685, 1685, + 1685, 1685, 1683, 1685, 1683, 1683, 1683, 1683, 1767, 1683, 1767, 1767, + 1767, 1767, 1769, 1767, 1769, 1769, 1769, 1769, 1747, 1769, 1747, 1747, + 1753, 1754, 1771, 1754, 1772, 1771, 1771, 1772, 1773, 1772, 1774, 1773, + 1773, 1774, 1775, 1774, 1776, 1775, 1775, 1776, 1747, 1776, 1748, 1747, + 1747, 1748, 1769, 1748, 1770, 1769, 1769, 1770, 1777, 1770, 1778, 1777, + 1777, 1778, 1779, 1778, 1780, 1779, 1779, 1780, 1781, 1780, 1782, 1781, + 1781, 1782, 1783, 1782, 1784, 1783, 1783, 1784, 1785, 1784, 1786, 1785, + 1785, 1786, 1787, 1786, 1788, 1787, 1787, 1788, 1763, 1788, 1764, 1763, + 1763, 1764, 1761, 1764, 1762, 1761, 1761, 1762, 1789, 1762, 1790, 1789, + 1789, 1790, 1791, 1790, 1792, 1791, 1791, 1792, 1793, 1792, 1794, 1793, + 1793, 1794, 1755, 1794, 1756, 1755, 1755, 1756, 1753, 1756, 1754, 1753, + 1753, 1753, 1771, 1753, 1771, 1771, 1771, 1771, 1773, 1771, 1773, 1773, + 1773, 1773, 1775, 1773, 1775, 1775, 1775, 1775, 1747, 1775, 1747, 1747, + 1747, 1747, 1769, 1747, 1769, 1769, 1769, 1769, 1777, 1769, 1777, 1777, + 1777, 1777, 1779, 1777, 1779, 1779, 1779, 1779, 1781, 1779, 1781, 1781, + 1781, 1781, 1783, 1781, 1783, 1783, 1783, 1783, 1785, 1783, 1785, 1785, + 1785, 1785, 1787, 1785, 1787, 1787, 1787, 1787, 1763, 1787, 1763, 1763, + 1763, 1763, 1761, 1763, 1761, 1761, 1761, 1761, 1789, 1761, 1789, 1789, + 1789, 1789, 1791, 1789, 1791, 1791, 1791, 1791, 1793, 1791, 1793, 1793, + 1793, 1793, 1755, 1793, 1755, 1755, 1755, 1755, 1753, 1755, 1753, 1753, + 1795, 1796, 1797, 1796, 1798, 1797, 1797, 1798, 1799, 1798, 1800, 1799, + 1799, 1800, 1801, 1800, 1802, 1801, 1801, 1802, 1795, 1802, 1796, 1795, + 1795, 1795, 1797, 1795, 1797, 1797, 1797, 1797, 1799, 1797, 1799, 1799, + 1799, 1799, 1801, 1799, 1801, 1801, 1801, 1801, 1795, 1801, 1795, 1795, + 1803, 1804, 1805, 1804, 1806, 1805, 1805, 1806, 1807, 1806, 1808, 1807, + 1807, 1808, 1809, 1808, 1810, 1809, 1809, 1810, 1811, 1810, 1812, 1811, + 1811, 1812, 1803, 1812, 1804, 1803, 1803, 1803, 1805, 1803, 1805, 1805, + 1805, 1805, 1807, 1805, 1807, 1807, 1807, 1807, 1809, 1807, 1809, 1809, + 1809, 1809, 1811, 1809, 1811, 1811, 1811, 1811, 1803, 1811, 1803, 1803, + 1813, 1814, 1815, 1814, 1816, 1815, 1815, 1816, 1817, 1816, 1818, 1817, + 1817, 1818, 1819, 1818, 1810, 1819, 1819, 1810, 1820, 1810, 1808, 1820, + 1820, 1808, 1813, 1808, 1814, 1813, 1813, 1813, 1815, 1813, 1815, 1815, + 1815, 1815, 1817, 1815, 1817, 1817, 1817, 1817, 1819, 1817, 1819, 1819, + 1819, 1819, 1820, 1819, 1820, 1820, 1820, 1820, 1813, 1820, 1813, 1813, + 1815, 1816, 1813, 1816, 1814, 1813, 1813, 1814, 1797, 1814, 1798, 1797, + 1797, 1798, 1795, 1798, 1796, 1795, 1795, 1796, 1821, 1796, 1822, 1821, + 1821, 1822, 1815, 1822, 1816, 1815, 1815, 1815, 1813, 1815, 1813, 1813, + 1813, 1813, 1797, 1813, 1797, 1797, 1797, 1797, 1795, 1797, 1795, 1795, + 1795, 1795, 1821, 1795, 1821, 1821, 1821, 1821, 1815, 1821, 1815, 1815, + 225, 226, 1823, 226, 1824, 1823, 1823, 1824, 1825, 1824, 1826, 1825, + 1825, 1826, 1827, 1826, 1828, 1827, 1827, 1828, 1829, 1828, 1830, 1829, + 1829, 1830, 1831, 1830, 1832, 1831, 1831, 1832, 227, 1832, 228, 227, + 227, 228, 225, 228, 226, 225, 225, 225, 1823, 225, 1823, 1823, + 1823, 1823, 1825, 1823, 1825, 1825, 1825, 1825, 1827, 1825, 1827, 1827, + 1827, 1827, 1829, 1827, 1829, 1829, 1829, 1829, 1831, 1829, 1831, 1831, + 1831, 1831, 227, 1831, 227, 227, 227, 227, 225, 227, 225, 225, + 1803, 1804, 1833, 1804, 1834, 1833, 1833, 1834, 1835, 1834, 1836, 1835, + 1835, 1836, 1837, 1836, 1744, 1837, 1837, 1744, 1699, 1744, 1700, 1699, + 1699, 1700, 1697, 1700, 1698, 1697, 1697, 1698, 1838, 1698, 1839, 1838, + 1838, 1839, 1805, 1839, 1806, 1805, 1805, 1806, 1803, 1806, 1804, 1803, + 1803, 1803, 1833, 1803, 1833, 1833, 1833, 1833, 1835, 1833, 1835, 1835, + 1835, 1835, 1837, 1835, 1837, 1837, 1837, 1837, 1699, 1837, 1699, 1699, + 1699, 1699, 1697, 1699, 1697, 1697, 1697, 1697, 1838, 1697, 1838, 1838, + 1838, 1838, 1805, 1838, 1805, 1805, 1805, 1805, 1803, 1805, 1803, 1803, + 1840, 1841, 1842, 1841, 1843, 1842, 1842, 1843, 1844, 1843, 1845, 1844, + 1844, 1845, 1846, 1845, 1847, 1846, 1846, 1847, 1848, 1847, 1849, 1848, + 1848, 1849, 1850, 1849, 1851, 1850, 1850, 1851, 1852, 1851, 1853, 1852, + 1852, 1853, 1854, 1853, 1855, 1854, 1854, 1855, 1856, 1855, 1857, 1856, + 1856, 1857, 1858, 1857, 1859, 1858, 1858, 1859, 1860, 1859, 1861, 1860, + 1860, 1861, 1862, 1861, 1863, 1862, 1862, 1863, 1840, 1863, 1841, 1840, + 1840, 1840, 1842, 1840, 1842, 1842, 1842, 1842, 1844, 1842, 1844, 1844, + 1844, 1844, 1846, 1844, 1846, 1846, 1846, 1846, 1848, 1846, 1848, 1848, + 1848, 1848, 1850, 1848, 1850, 1850, 1850, 1850, 1852, 1850, 1852, 1852, + 1852, 1852, 1854, 1852, 1854, 1854, 1854, 1854, 1856, 1854, 1856, 1856, + 1856, 1856, 1858, 1856, 1858, 1858, 1858, 1858, 1860, 1858, 1860, 1860, + 1860, 1860, 1862, 1860, 1862, 1862, 1862, 1862, 1840, 1862, 1840, 1840, + 1864, 1865, 1866, 1865, 1867, 1866, 1866, 1867, 1868, 1867, 1869, 1868, + 1868, 1869, 1870, 1869, 1871, 1870, 1870, 1871, 1864, 1871, 1865, 1864, + 1864, 1864, 1866, 1864, 1866, 1866, 1866, 1866, 1868, 1866, 1868, 1868, + 1868, 1868, 1870, 1868, 1870, 1870, 1870, 1870, 1864, 1870, 1864, 1864, + 1872, 1873, 1874, 1873, 1875, 1874, 1874, 1875, 1876, 1875, 1877, 1876, + 1876, 1877, 1878, 1877, 1879, 1878, 1878, 1879, 1872, 1879, 1873, 1872, + 1872, 1872, 1874, 1872, 1874, 1874, 1874, 1874, 1876, 1874, 1876, 1876, + 1876, 1876, 1878, 1876, 1878, 1878, 1878, 1878, 1872, 1878, 1872, 1872, + 1880, 1881, 1882, 1881, 1883, 1882, 1882, 1883, 1884, 1883, 1885, 1884, + 1884, 1885, 1886, 1885, 348, 1886, 1886, 348, 1887, 348, 346, 1887, + 1887, 346, 1880, 346, 1881, 1880, 1880, 1880, 1882, 1880, 1882, 1882, + 1882, 1882, 1884, 1882, 1884, 1884, 1884, 1884, 1886, 1884, 1886, 1886, + 1886, 1886, 1887, 1886, 1887, 1887, 1887, 1887, 1880, 1887, 1880, 1880, + 1864, 1865, 1876, 1865, 1877, 1876, 1876, 1877, 1874, 1877, 1875, 1874, + 1874, 1875, 1888, 1875, 1889, 1888, 1888, 1889, 1866, 1889, 1867, 1866, + 1866, 1867, 1864, 1867, 1865, 1864, 1864, 1864, 1876, 1864, 1876, 1876, + 1876, 1876, 1874, 1876, 1874, 1874, 1874, 1874, 1888, 1874, 1888, 1888, + 1888, 1888, 1866, 1888, 1866, 1866, 1866, 1866, 1864, 1866, 1864, 1864, + 1848, 1849, 1890, 1849, 1891, 1890, 1890, 1891, 1892, 1891, 1893, 1892, + 1892, 1893, 267, 1893, 268, 267, 267, 268, 265, 268, 266, 265, + 265, 266, 1852, 266, 1853, 1852, 1852, 1853, 1850, 1853, 1851, 1850, + 1850, 1851, 1848, 1851, 1849, 1848, 1848, 1848, 1890, 1848, 1890, 1890, + 1890, 1890, 1892, 1890, 1892, 1892, 1892, 1892, 267, 1892, 267, 267, + 267, 267, 265, 267, 265, 265, 265, 265, 1852, 265, 1852, 1852, + 1852, 1852, 1850, 1852, 1850, 1850, 1850, 1850, 1848, 1850, 1848, 1848, + 1880, 1881, 1872, 1881, 1873, 1872, 1872, 1873, 1878, 1873, 1879, 1878, + 1878, 1879, 1894, 1879, 1895, 1894, 1894, 1895, 1896, 1895, 1897, 1896, + 1896, 1897, 1842, 1897, 1843, 1842, 1842, 1843, 1840, 1843, 1841, 1840, + 1840, 1841, 1898, 1841, 1899, 1898, 1898, 1899, 1882, 1899, 1883, 1882, + 1882, 1883, 1880, 1883, 1881, 1880, 1880, 1880, 1872, 1880, 1872, 1872, + 1872, 1872, 1878, 1872, 1878, 1878, 1878, 1878, 1894, 1878, 1894, 1894, + 1894, 1894, 1896, 1894, 1896, 1896, 1896, 1896, 1842, 1896, 1842, 1842, + 1842, 1842, 1840, 1842, 1840, 1840, 1840, 1840, 1898, 1840, 1898, 1898, + 1898, 1898, 1882, 1898, 1882, 1882, 1882, 1882, 1880, 1882, 1880, 1880, + 1900, 1901, 1902, 1901, 1903, 1902, 1902, 1903, 1904, 1903, 1905, 1904, + 1904, 1905, 1906, 1905, 1907, 1906, 1906, 1907, 1908, 1907, 1909, 1908, + 1908, 1909, 1910, 1909, 1911, 1910, 1910, 1911, 1900, 1911, 1901, 1900, + 1900, 1900, 1902, 1900, 1902, 1902, 1902, 1902, 1904, 1902, 1904, 1904, + 1904, 1904, 1906, 1904, 1906, 1906, 1906, 1906, 1908, 1906, 1908, 1908, + 1908, 1908, 1910, 1908, 1910, 1910, 1910, 1910, 1900, 1910, 1900, 1900, + 1912, 1913, 1914, 1913, 1915, 1914, 1914, 1915, 1904, 1915, 1905, 1904, + 1904, 1905, 1902, 1905, 1903, 1902, 1902, 1903, 1900, 1903, 1901, 1900, + 1900, 1901, 1916, 1901, 1917, 1916, 1916, 1917, 1912, 1917, 1913, 1912, + 1912, 1912, 1914, 1912, 1914, 1914, 1914, 1914, 1904, 1914, 1904, 1904, + 1904, 1904, 1902, 1904, 1902, 1902, 1902, 1902, 1900, 1902, 1900, 1900, + 1900, 1900, 1916, 1900, 1916, 1916, 1916, 1916, 1912, 1916, 1912, 1912, + 1918, 1919, 1920, 1919, 1921, 1920, 1920, 1921, 1922, 1921, 1923, 1922, + 1922, 1923, 1914, 1923, 1915, 1914, 1914, 1915, 1912, 1915, 1913, 1912, + 1912, 1913, 1916, 1913, 1917, 1916, 1916, 1917, 1924, 1917, 1925, 1924, + 1924, 1925, 1926, 1925, 1927, 1926, 1926, 1927, 1918, 1927, 1919, 1918, + 1918, 1918, 1920, 1918, 1920, 1920, 1920, 1920, 1922, 1920, 1922, 1922, + 1922, 1922, 1914, 1922, 1914, 1914, 1914, 1914, 1912, 1914, 1912, 1912, + 1912, 1912, 1916, 1912, 1916, 1916, 1916, 1916, 1924, 1916, 1924, 1924, + 1924, 1924, 1926, 1924, 1926, 1926, 1926, 1926, 1918, 1926, 1918, 1918, + 1920, 1921, 1918, 1921, 1919, 1918, 1918, 1919, 1926, 1919, 1927, 1926, + 1926, 1927, 1924, 1927, 1925, 1924, 1924, 1925, 1928, 1925, 1929, 1928, + 1928, 1929, 1930, 1929, 1931, 1930, 1930, 1931, 1932, 1931, 1933, 1932, + 1932, 1933, 1934, 1933, 1935, 1934, 1934, 1935, 1936, 1935, 1937, 1936, + 1936, 1937, 1938, 1937, 1939, 1938, 1938, 1939, 1920, 1939, 1921, 1920, + 1920, 1920, 1918, 1920, 1918, 1918, 1918, 1918, 1926, 1918, 1926, 1926, + 1926, 1926, 1924, 1926, 1924, 1924, 1924, 1924, 1928, 1924, 1928, 1928, + 1928, 1928, 1930, 1928, 1930, 1930, 1930, 1930, 1932, 1930, 1932, 1932, + 1932, 1932, 1934, 1932, 1934, 1934, 1934, 1934, 1936, 1934, 1936, 1936, + 1936, 1936, 1938, 1936, 1938, 1938, 1938, 1938, 1920, 1938, 1920, 1920, + 1940, 1941, 1942, 1941, 1943, 1942, 1942, 1943, 1944, 1943, 1945, 1944, + 1944, 1945, 1946, 1945, 1947, 1946, 1946, 1947, 1948, 1947, 1949, 1948, + 1948, 1949, 1950, 1949, 1951, 1950, 1950, 1951, 1940, 1951, 1941, 1940, + 1940, 1940, 1942, 1940, 1942, 1942, 1942, 1942, 1944, 1942, 1944, 1944, + 1944, 1944, 1946, 1944, 1946, 1946, 1946, 1946, 1948, 1946, 1948, 1948, + 1948, 1948, 1950, 1948, 1950, 1950, 1950, 1950, 1940, 1950, 1940, 1940, + 1948, 1949, 1946, 1949, 1947, 1946, 1946, 1947, 1944, 1947, 1945, 1944, + 1944, 1945, 1952, 1945, 1953, 1952, 1952, 1953, 1954, 1953, 1955, 1954, + 1954, 1955, 1956, 1955, 1957, 1956, 1956, 1957, 1958, 1957, 1959, 1958, + 1958, 1959, 1960, 1959, 1961, 1960, 1960, 1961, 1934, 1961, 1935, 1934, + 1934, 1935, 1932, 1935, 1933, 1932, 1932, 1933, 1930, 1933, 1931, 1930, + 1930, 1931, 1928, 1931, 1929, 1928, 1928, 1929, 1948, 1929, 1949, 1948, + 1948, 1948, 1946, 1948, 1946, 1946, 1946, 1946, 1944, 1946, 1944, 1944, + 1944, 1944, 1952, 1944, 1952, 1952, 1952, 1952, 1954, 1952, 1954, 1954, + 1954, 1954, 1956, 1954, 1956, 1956, 1956, 1956, 1958, 1956, 1958, 1958, + 1958, 1958, 1960, 1958, 1960, 1960, 1960, 1960, 1934, 1960, 1934, 1934, + 1934, 1934, 1932, 1934, 1932, 1932, 1932, 1932, 1930, 1932, 1930, 1930, + 1930, 1930, 1928, 1930, 1928, 1928, 1928, 1928, 1948, 1928, 1948, 1948, + 283, 284, 1962, 284, 308, 1962, 1962, 308, 1963, 308, 1964, 1963, + 1963, 1964, 1965, 1964, 1966, 1965, 1965, 1966, 1967, 1966, 1968, 1967, + 1967, 1968, 285, 1968, 286, 285, 285, 286, 283, 286, 284, 283, + 283, 283, 1962, 283, 1962, 1962, 1962, 1962, 1963, 1962, 1963, 1963, + 1963, 1963, 1965, 1963, 1965, 1965, 1965, 1965, 1967, 1965, 1967, 1967, + 1967, 1967, 285, 1967, 285, 285, 285, 285, 283, 285, 283, 283, + 289, 290, 1969, 290, 1970, 1969, 1969, 1970, 1971, 1970, 1972, 1971, + 1971, 1972, 1973, 1972, 1974, 1973, 1973, 1974, 1975, 1974, 1976, 1975, + 1975, 1976, 1977, 1976, 1978, 1977, 1977, 1978, 1979, 1978, 306, 1979, + 1979, 306, 281, 306, 282, 281, 281, 282, 289, 282, 290, 289, + 289, 289, 1969, 289, 1969, 1969, 1969, 1969, 1971, 1969, 1971, 1971, + 1971, 1971, 1973, 1971, 1973, 1973, 1973, 1973, 1975, 1973, 1975, 1975, + 1975, 1975, 1977, 1975, 1977, 1977, 1977, 1977, 1979, 1977, 1979, 1979, + 1979, 1979, 281, 1979, 281, 281, 281, 281, 289, 281, 289, 289, + 1533, 1534, 1531, 1534, 1532, 1531, 1531, 1532, 1632, 1532, 1633, 1632, + 1632, 1633, 1630, 1633, 1631, 1630, 1630, 1631, 1640, 1631, 1619, 1640, + 1640, 1619, 1980, 1619, 1617, 1980, 1980, 1617, 1981, 1617, 1615, 1981, + 1981, 1615, 1533, 1615, 1534, 1533, 1533, 1533, 1531, 1533, 1531, 1531, + 1531, 1531, 1632, 1531, 1632, 1632, 1632, 1632, 1630, 1632, 1630, 1630, + 1630, 1630, 1640, 1630, 1640, 1640, 1640, 1640, 1980, 1640, 1980, 1980, + 1980, 1980, 1981, 1980, 1981, 1981, 1981, 1981, 1533, 1981, 1533, 1533, + 511, 512, 509, 512, 510, 509, 509, 510, 1982, 510, 618, 1982, + 1982, 618, 1983, 618, 616, 1983, 1983, 616, 1984, 616, 1985, 1984, + 1984, 1985, 1986, 1985, 1987, 1986, 1986, 1987, 625, 1987, 626, 625, + 625, 626, 631, 626, 632, 631, 631, 632, 511, 632, 512, 511, + 511, 511, 509, 511, 509, 509, 509, 509, 1982, 509, 1982, 1982, + 1982, 1982, 1983, 1982, 1983, 1983, 1983, 1983, 1984, 1983, 1984, 1984, + 1984, 1984, 1986, 1984, 1986, 1986, 1986, 1986, 625, 1986, 625, 625, + 625, 625, 631, 625, 631, 631, 631, 631, 511, 631, 511, 511, + 491, 492, 489, 492, 490, 489, 489, 490, 1988, 490, 1989, 1988, + 1988, 1989, 1990, 1989, 1991, 1990, 1990, 1991, 1992, 1991, 1993, 1992, + 1992, 1993, 1994, 1993, 1995, 1994, 1994, 1995, 491, 1995, 492, 491, + 491, 491, 489, 491, 489, 489, 489, 489, 1988, 489, 1988, 1988, + 1988, 1988, 1990, 1988, 1990, 1990, 1990, 1990, 1992, 1990, 1992, 1992, + 1992, 1992, 1994, 1992, 1994, 1994, 1994, 1994, 491, 1994, 491, 491, + 1996, 1997, 1998, 1997, 1999, 1998, 1998, 1999, 2000, 1999, 2001, 2000, + 2000, 2001, 2002, 2001, 2003, 2002, 2002, 2003, 2004, 2003, 2005, 2004, + 2004, 2005, 2006, 2005, 2007, 2006, 2006, 2007, 2008, 2007, 2009, 2008, + 2008, 2009, 2010, 2009, 2011, 2010, 2010, 2011, 2012, 2011, 2013, 2012, + 2012, 2013, 2014, 2013, 2015, 2014, 2014, 2015, 2016, 2015, 2017, 2016, + 2016, 2017, 2018, 2017, 2019, 2018, 2018, 2019, 2020, 2019, 2021, 2020, + 2020, 2021, 1996, 2021, 1997, 1996, 1996, 1996, 1998, 1996, 1998, 1998, + 1998, 1998, 2000, 1998, 2000, 2000, 2000, 2000, 2002, 2000, 2002, 2002, + 2002, 2002, 2004, 2002, 2004, 2004, 2004, 2004, 2006, 2004, 2006, 2006, + 2006, 2006, 2008, 2006, 2008, 2008, 2008, 2008, 2010, 2008, 2010, 2010, + 2010, 2010, 2012, 2010, 2012, 2012, 2012, 2012, 2014, 2012, 2014, 2014, + 2014, 2014, 2016, 2014, 2016, 2016, 2016, 2016, 2018, 2016, 2018, 2018, + 2018, 2018, 2020, 2018, 2020, 2020, 2020, 2020, 1996, 2020, 1996, 1996, + 2022, 2023, 2024, 2023, 2025, 2024, 2024, 2025, 2026, 2025, 2027, 2026, + 2026, 2027, 2028, 2027, 2029, 2028, 2028, 2029, 2030, 2029, 2031, 2030, + 2030, 2031, 2032, 2031, 2033, 2032, 2032, 2033, 2034, 2033, 2035, 2034, + 2034, 2035, 2036, 2035, 2037, 2036, 2036, 2037, 2038, 2037, 2039, 2038, + 2038, 2039, 2040, 2039, 2041, 2040, 2040, 2041, 2042, 2041, 2043, 2042, + 2042, 2043, 2044, 2043, 2045, 2044, 2044, 2045, 2046, 2045, 2047, 2046, + 2046, 2047, 2048, 2047, 2049, 2048, 2048, 2049, 2050, 2049, 2051, 2050, + 2050, 2051, 2052, 2051, 2053, 2052, 2052, 2053, 2054, 2053, 2055, 2054, + 2054, 2055, 2056, 2055, 2057, 2056, 2056, 2057, 2058, 2057, 2059, 2058, + 2058, 2059, 2060, 2059, 2061, 2060, 2060, 2061, 2062, 2061, 2063, 2062, + 2062, 2063, 2064, 2063, 2065, 2064, 2064, 2065, 2066, 2065, 2067, 2066, + 2066, 2067, 2068, 2067, 2069, 2068, 2068, 2069, 2070, 2069, 2071, 2070, + 2070, 2071, 2072, 2071, 2073, 2072, 2072, 2073, 2074, 2073, 2075, 2074, + 2074, 2075, 2076, 2075, 2077, 2076, 2076, 2077, 2078, 2077, 2079, 2078, + 2078, 2079, 2080, 2079, 2081, 2080, 2080, 2081, 2082, 2081, 2083, 2082, + 2082, 2083, 2084, 2083, 2085, 2084, 2084, 2085, 2086, 2085, 2087, 2086, + 2086, 2087, 2088, 2087, 2089, 2088, 2088, 2089, 2090, 2089, 2091, 2090, + 2090, 2091, 2092, 2091, 2093, 2092, 2092, 2093, 2094, 2093, 2095, 2094, + 2094, 2095, 2096, 2095, 2097, 2096, 2096, 2097, 2098, 2097, 2099, 2098, + 2098, 2099, 2100, 2099, 2101, 2100, 2100, 2101, 2102, 2101, 2103, 2102, + 2102, 2103, 2104, 2103, 2105, 2104, 2104, 2105, 2106, 2105, 1999, 2106, + 2106, 1999, 2107, 1999, 1997, 2107, 2107, 1997, 2108, 1997, 2109, 2108, + 2108, 2109, 2110, 2109, 2111, 2110, 2110, 2111, 2112, 2111, 2113, 2112, + 2112, 2113, 2114, 2113, 2115, 2114, 2114, 2115, 2116, 2115, 2117, 2116, + 2116, 2117, 2022, 2117, 2023, 2022, 2022, 2022, 2024, 2022, 2024, 2024, + 2024, 2024, 2026, 2024, 2026, 2026, 2026, 2026, 2028, 2026, 2028, 2028, + 2028, 2028, 2030, 2028, 2030, 2030, 2030, 2030, 2032, 2030, 2032, 2032, + 2032, 2032, 2034, 2032, 2034, 2034, 2034, 2034, 2036, 2034, 2036, 2036, + 2036, 2036, 2038, 2036, 2038, 2038, 2038, 2038, 2040, 2038, 2040, 2040, + 2040, 2040, 2042, 2040, 2042, 2042, 2042, 2042, 2044, 2042, 2044, 2044, + 2044, 2044, 2046, 2044, 2046, 2046, 2046, 2046, 2048, 2046, 2048, 2048, + 2048, 2048, 2050, 2048, 2050, 2050, 2050, 2050, 2052, 2050, 2052, 2052, + 2052, 2052, 2054, 2052, 2054, 2054, 2054, 2054, 2056, 2054, 2056, 2056, + 2056, 2056, 2058, 2056, 2058, 2058, 2058, 2058, 2060, 2058, 2060, 2060, + 2060, 2060, 2062, 2060, 2062, 2062, 2062, 2062, 2064, 2062, 2064, 2064, + 2064, 2064, 2066, 2064, 2066, 2066, 2066, 2066, 2068, 2066, 2068, 2068, + 2068, 2068, 2070, 2068, 2070, 2070, 2070, 2070, 2072, 2070, 2072, 2072, + 2072, 2072, 2074, 2072, 2074, 2074, 2074, 2074, 2076, 2074, 2076, 2076, + 2076, 2076, 2078, 2076, 2078, 2078, 2078, 2078, 2080, 2078, 2080, 2080, + 2080, 2080, 2082, 2080, 2082, 2082, 2082, 2082, 2084, 2082, 2084, 2084, + 2084, 2084, 2086, 2084, 2086, 2086, 2086, 2086, 2088, 2086, 2088, 2088, + 2088, 2088, 2090, 2088, 2090, 2090, 2090, 2090, 2092, 2090, 2092, 2092, + 2092, 2092, 2094, 2092, 2094, 2094, 2094, 2094, 2096, 2094, 2096, 2096, + 2096, 2096, 2098, 2096, 2098, 2098, 2098, 2098, 2100, 2098, 2100, 2100, + 2100, 2100, 2102, 2100, 2102, 2102, 2102, 2102, 2104, 2102, 2104, 2104, + 2104, 2104, 2106, 2104, 2106, 2106, 2106, 2106, 2107, 2106, 2107, 2107, + 2107, 2107, 2108, 2107, 2108, 2108, 2108, 2108, 2110, 2108, 2110, 2110, + 2110, 2110, 2112, 2110, 2112, 2112, 2112, 2112, 2114, 2112, 2114, 2114, + 2114, 2114, 2116, 2114, 2116, 2116, 2116, 2116, 2022, 2116, 2022, 2022, + 2118, 2119, 2120, 2119, 2121, 2120, 2120, 2121, 311, 2121, 2122, 311, + 311, 2122, 317, 2122, 2123, 317, 317, 2123, 2118, 2123, 2119, 2118, + 2118, 2118, 2120, 2118, 2120, 2120, 2120, 2120, 311, 2120, 311, 311, + 311, 311, 317, 311, 317, 317, 317, 317, 2118, 317, 2118, 2118, + 2122, 2121, 2119, 2123, 2122, 2119, 2118, 2124, 2125, 2124, 2126, 2125, + 2125, 2126, 2127, 2126, 2128, 2127, 2127, 2128, 2120, 2128, 2129, 2120, + 2120, 2129, 2118, 2129, 2124, 2118, 2118, 2118, 2125, 2118, 2125, 2125, + 2125, 2125, 2127, 2125, 2127, 2127, 2127, 2127, 2120, 2127, 2120, 2120, + 2120, 2120, 2118, 2120, 2118, 2118, 984, 891, 982, 891, 983, 982, + 982, 983, 2130, 983, 2131, 2130, 2130, 2131, 882, 2131, 883, 882, + 882, 883, 880, 883, 881, 880, 880, 881, 878, 881, 879, 878, + 878, 879, 876, 879, 877, 876, 876, 877, 874, 877, 875, 874, + 874, 875, 2132, 875, 893, 2132, 2132, 893, 984, 893, 891, 984, + 984, 984, 982, 984, 982, 982, 982, 982, 2130, 982, 2130, 2130, + 2130, 2130, 882, 2130, 882, 882, 882, 882, 880, 882, 880, 880, + 880, 880, 878, 880, 878, 878, 878, 878, 876, 878, 876, 876, + 876, 876, 874, 876, 874, 874, 874, 874, 2132, 874, 2132, 2132, + 2132, 2132, 984, 2132, 984, 984, 2133, 2134, 2135, 2134, 524, 2135, + 2135, 524, 2136, 524, 548, 2136, 2136, 548, 2137, 548, 2138, 2137, + 2137, 2138, 517, 2138, 518, 517, 517, 518, 515, 518, 516, 515, + 515, 516, 2133, 516, 2134, 2133, 2133, 2133, 2135, 2133, 2135, 2135, + 2135, 2135, 2136, 2135, 2136, 2136, 2136, 2136, 2137, 2136, 2137, 2137, + 2137, 2137, 517, 2137, 517, 517, 517, 517, 515, 517, 515, 515, + 515, 515, 2133, 515, 2133, 2133, 543, 544, 2139, 544, 2140, 2139, + 2139, 2140, 2141, 2140, 646, 2141, 2141, 646, 2142, 646, 644, 2142, + 2142, 644, 2143, 644, 2144, 2143, 2143, 2144, 2145, 2144, 2138, 2145, + 2145, 2138, 547, 2138, 548, 547, 547, 548, 545, 548, 546, 545, + 545, 546, 543, 546, 544, 543, 543, 543, 2139, 543, 2139, 2139, + 2139, 2139, 2141, 2139, 2141, 2141, 2141, 2141, 2142, 2141, 2142, 2142, + 2142, 2142, 2143, 2142, 2143, 2143, 2143, 2143, 2145, 2143, 2145, 2145, + 2145, 2145, 547, 2145, 547, 547, 547, 547, 545, 547, 545, 545, + 545, 545, 543, 545, 543, 543, 1986, 1987, 1984, 1987, 1985, 1984, + 1984, 1985, 2146, 1985, 2147, 2146, 2146, 2147, 2148, 2147, 2144, 2148, + 2148, 2144, 643, 2144, 644, 643, 643, 644, 641, 644, 642, 641, + 641, 642, 1986, 642, 1987, 1986, 1986, 1986, 1984, 1986, 1984, 1984, + 1984, 1984, 2146, 1984, 2146, 2146, 2146, 2146, 2148, 2146, 2148, 2148, + 2148, 2148, 643, 2148, 643, 643, 643, 643, 641, 643, 641, 641, + 641, 641, 1986, 641, 1986, 1986, 2143, 2144, 2149, 2144, 2147, 2149, + 2149, 2147, 2150, 2147, 1985, 2150, 2150, 1985, 615, 1985, 616, 615, + 615, 616, 621, 616, 520, 621, 621, 520, 2151, 520, 518, 2151, + 2151, 518, 2145, 518, 2138, 2145, 2145, 2138, 2143, 2138, 2144, 2143, + 2143, 2143, 2149, 2143, 2149, 2149, 2149, 2149, 2150, 2149, 2150, 2150, + 2150, 2150, 615, 2150, 615, 615, 615, 615, 621, 615, 621, 621, + 621, 621, 2151, 621, 2151, 2151, 2151, 2151, 2145, 2151, 2145, 2145, + 2145, 2145, 2143, 2145, 2143, 2143, 2152, 538, 2153, 538, 634, 2153, + 2153, 634, 2154, 634, 2155, 2154, 2154, 2155, 2156, 2155, 650, 2156, + 2156, 650, 2157, 650, 540, 2157, 2157, 540, 2158, 540, 2159, 2158, + 2158, 2159, 2152, 2159, 538, 2152, 2160, 2152, 2161, 2152, 2153, 2161, + 2161, 2153, 2162, 2153, 2154, 2162, 2162, 2154, 2163, 2154, 2156, 2163, + 2163, 2156, 2157, 2156, 2157, 2157, 2157, 2157, 2164, 2157, 2158, 2164, + 2164, 2158, 2160, 2158, 2152, 2160, 2165, 2166, 2167, 2166, 2168, 2167, + 2167, 2168, 2169, 2168, 2170, 2169, 2169, 2170, 2171, 2170, 1602, 2171, + 2171, 1602, 2172, 1602, 1629, 2172, 2172, 1629, 2173, 1629, 2174, 2173, + 2173, 2174, 2175, 2174, 2176, 2175, 2175, 2176, 2177, 2176, 1556, 2177, + 2177, 1556, 2178, 1556, 1554, 2178, 2178, 1554, 2179, 1554, 1582, 2179, + 2179, 1582, 2165, 1582, 2166, 2165, 2165, 2165, 2167, 2165, 2167, 2167, + 2167, 2167, 2169, 2167, 2169, 2169, 2169, 2169, 2171, 2169, 2171, 2171, + 2171, 2171, 2172, 2171, 2172, 2172, 2172, 2172, 2173, 2172, 2173, 2173, + 2173, 2173, 2175, 2173, 2175, 2175, 2175, 2175, 2177, 2175, 2177, 2177, + 2177, 2177, 2178, 2177, 2178, 2178, 2178, 2178, 2179, 2178, 2179, 2179, + 2179, 2179, 2165, 2179, 2165, 2165, 1561, 1540, 2180, 1540, 1538, 2180, + 2180, 1538, 2181, 1538, 1610, 2181, 2181, 1610, 2182, 1610, 1608, 2182, + 2182, 1608, 2183, 1608, 1606, 2183, 2183, 1606, 2184, 1606, 1604, 2184, + 2184, 1604, 2185, 1604, 1602, 2185, 2185, 1602, 2186, 1602, 2170, 2186, + 2186, 2170, 2187, 2170, 2168, 2187, 2187, 2168, 2188, 2168, 2166, 2188, + 2188, 2166, 1581, 2166, 1582, 1581, 1581, 1582, 1579, 1582, 1580, 1579, + 1579, 1580, 1566, 1580, 1567, 1566, 1566, 1567, 1564, 1567, 1565, 1564, + 1564, 1565, 1562, 1565, 1563, 1562, 1562, 1563, 1561, 1563, 1540, 1561, + 1561, 1561, 2180, 1561, 2180, 2180, 2180, 2180, 2181, 2180, 2181, 2181, + 2181, 2181, 2182, 2181, 2182, 2182, 2182, 2182, 2183, 2182, 2183, 2183, + 2183, 2183, 2184, 2183, 2184, 2184, 2184, 2184, 2185, 2184, 2185, 2185, + 2185, 2185, 2186, 2185, 2186, 2186, 2186, 2186, 2187, 2186, 2187, 2187, + 2187, 2187, 2188, 2187, 2188, 2188, 2188, 2188, 1581, 2188, 1581, 1581, + 1581, 1581, 1579, 1581, 1579, 1579, 1579, 1579, 1566, 1579, 1566, 1566, + 1566, 1566, 1564, 1566, 1564, 1564, 1564, 1564, 1562, 1564, 1562, 1562, + 1562, 1562, 1561, 1562, 1561, 1561, 2189, 1318, 2190, 1318, 1300, 2190, + 2190, 1300, 2191, 1300, 1298, 2191, 2191, 1298, 2192, 1298, 2193, 2192, + 2192, 2193, 2194, 2193, 1320, 2194, 2194, 1320, 2189, 1320, 1318, 2189, + 2189, 2189, 2190, 2189, 2190, 2190, 2190, 2190, 2191, 2190, 2191, 2191, + 2191, 2191, 2192, 2191, 2192, 2192, 2192, 2192, 2194, 2192, 2194, 2194, + 2194, 2194, 2189, 2194, 2189, 2189, 2205, 2198, 2206, 2198, 2196, 2206, + 2206, 2196, 2207, 2196, 2204, 2207, 2207, 2204, 2208, 2204, 2209, 2208, + 2208, 2209, 2210, 2209, 2211, 2210, 2210, 2211, 2212, 2211, 2213, 2212, + 2212, 2213, 2214, 2213, 2215, 2214, 2214, 2215, 2216, 2215, 2217, 2216, + 2216, 2217, 2218, 2217, 2219, 2218, 2218, 2219, 2220, 2219, 2221, 2220, + 2220, 2221, 2222, 2221, 2223, 2222, 2222, 2223, 2224, 2223, 2225, 2224, + 2224, 2225, 2226, 2225, 2227, 2226, 2226, 2227, 2228, 2227, 2229, 2228, + 2228, 2229, 2230, 2229, 2231, 2230, 2230, 2231, 2232, 2231, 2233, 2232, + 2232, 2233, 2234, 2233, 2235, 2234, 2234, 2235, 2236, 2235, 2237, 2236, + 2236, 2237, 2205, 2237, 2198, 2205, 2205, 2205, 2206, 2205, 2206, 2206, + 2206, 2206, 2207, 2206, 2207, 2207, 2207, 2207, 2208, 2207, 2208, 2208, + 2208, 2208, 2210, 2208, 2210, 2210, 2210, 2210, 2212, 2210, 2212, 2212, + 2212, 2212, 2214, 2212, 2214, 2214, 2214, 2214, 2216, 2214, 2216, 2216, + 2216, 2216, 2218, 2216, 2218, 2218, 2218, 2218, 2220, 2218, 2220, 2220, + 2220, 2220, 2222, 2220, 2222, 2222, 2222, 2222, 2224, 2222, 2224, 2224, + 2224, 2224, 2226, 2224, 2226, 2226, 2226, 2226, 2228, 2226, 2228, 2228, + 2228, 2228, 2230, 2228, 2230, 2230, 2230, 2230, 2232, 2230, 2232, 2232, + 2232, 2232, 2234, 2232, 2234, 2234, 2234, 2234, 2236, 2234, 2236, 2236, + 2236, 2236, 2205, 2236, 2205, 2205, 2238, 2239, 2240, 2239, 2241, 2240, + 2240, 2241, 2242, 2241, 2243, 2242, 2242, 2243, 2244, 2243, 2245, 2244, + 2244, 2245, 2246, 2245, 2247, 2246, 2246, 2247, 2248, 2247, 2249, 2248, + 2248, 2249, 2250, 2249, 2251, 2250, 2250, 2251, 2252, 2251, 2253, 2252, + 2252, 2253, 2254, 2253, 2255, 2254, 2254, 2255, 2256, 2255, 2257, 2256, + 2256, 2257, 2238, 2257, 2239, 2238, 2238, 2238, 2240, 2238, 2240, 2240, + 2240, 2240, 2242, 2240, 2242, 2242, 2242, 2242, 2244, 2242, 2244, 2244, + 2244, 2244, 2246, 2244, 2246, 2246, 2246, 2246, 2248, 2246, 2248, 2248, + 2248, 2248, 2250, 2248, 2250, 2250, 2250, 2250, 2252, 2250, 2252, 2252, + 2252, 2252, 2254, 2252, 2254, 2254, 2254, 2254, 2256, 2254, 2256, 2256, + 2256, 2256, 2238, 2256, 2238, 2238, 2258, 2247, 2259, 2247, 2245, 2259, + 2259, 2245, 2260, 2245, 2261, 2260, 2260, 2261, 2262, 2261, 2263, 2262, + 2262, 2263, 2264, 2263, 2265, 2264, 2264, 2265, 2258, 2265, 2247, 2258, + 2258, 2258, 2259, 2258, 2259, 2259, 2259, 2259, 2260, 2259, 2260, 2260, + 2260, 2260, 2262, 2260, 2262, 2262, 2262, 2262, 2264, 2262, 2264, 2264, + 2264, 2264, 2258, 2264, 2258, 2258, 2266, 2241, 2267, 2241, 2239, 2267, + 2267, 2239, 2268, 2239, 2257, 2268, 2268, 2257, 2269, 2257, 2270, 2269, + 2269, 2270, 2271, 2270, 2272, 2271, 2271, 2272, 2273, 2272, 2274, 2273, + 2273, 2274, 2275, 2274, 2276, 2275, 2275, 2276, 2277, 2276, 2278, 2277, + 2277, 2278, 2279, 2278, 2280, 2279, 2279, 2280, 2281, 2280, 2282, 2281, + 2281, 2282, 2266, 2282, 2241, 2266, 2266, 2266, 2267, 2266, 2267, 2267, + 2267, 2267, 2268, 2267, 2268, 2268, 2268, 2268, 2269, 2268, 2269, 2269, + 2269, 2269, 2271, 2269, 2271, 2271, 2271, 2271, 2273, 2271, 2273, 2273, + 2273, 2273, 2275, 2273, 2275, 2275, 2275, 2275, 2277, 2275, 2277, 2277, + 2277, 2277, 2279, 2277, 2279, 2279, 2279, 2279, 2281, 2279, 2281, 2281, + 2281, 2281, 2266, 2281, 2266, 2266, 2283, 2284, 2285, 2284, 2286, 2285, + 2285, 2286, 2287, 2286, 2288, 2287, 2287, 2288, 2289, 2288, 2290, 2289, + 2289, 2290, 2291, 2290, 2292, 2291, 2291, 2292, 2293, 2292, 2294, 2293, + 2293, 2294, 2295, 2294, 2296, 2295, 2295, 2296, 2297, 2296, 2298, 2297, + 2297, 2298, 2299, 2298, 2300, 2299, 2299, 2300, 2301, 2300, 2302, 2301, + 2301, 2302, 2303, 2302, 2304, 2303, 2303, 2304, 2305, 2304, 2306, 2305, + 2305, 2306, 2307, 2306, 2308, 2307, 2307, 2308, 2283, 2308, 2284, 2283, + 2283, 2283, 2285, 2283, 2285, 2285, 2285, 2285, 2287, 2285, 2287, 2287, + 2287, 2287, 2289, 2287, 2289, 2289, 2289, 2289, 2291, 2289, 2291, 2291, + 2291, 2291, 2293, 2291, 2293, 2293, 2293, 2293, 2295, 2293, 2295, 2295, + 2295, 2295, 2297, 2295, 2297, 2297, 2297, 2297, 2299, 2297, 2299, 2299, + 2299, 2299, 2301, 2299, 2301, 2301, 2301, 2301, 2303, 2301, 2303, 2303, + 2303, 2303, 2305, 2303, 2305, 2305, 2305, 2305, 2307, 2305, 2307, 2307, + 2307, 2307, 2283, 2307, 2283, 2283, 2309, 2310, 2311, 2310, 2312, 2311, + 2311, 2312, 2313, 2312, 2314, 2313, 2313, 2314, 2315, 2314, 2316, 2315, + 2315, 2316, 2317, 2316, 2318, 2317, 2317, 2318, 2319, 2318, 2290, 2319, + 2319, 2290, 2320, 2290, 2288, 2320, 2320, 2288, 2321, 2288, 2286, 2321, + 2321, 2286, 2322, 2286, 2323, 2322, 2322, 2323, 2324, 2323, 2325, 2324, + 2324, 2325, 2326, 2325, 2327, 2326, 2326, 2327, 2328, 2327, 2329, 2328, + 2328, 2329, 2330, 2329, 2331, 2330, 2330, 2331, 2332, 2331, 2333, 2332, + 2332, 2333, 2309, 2333, 2310, 2309, 2309, 2309, 2311, 2309, 2311, 2311, + 2311, 2311, 2313, 2311, 2313, 2313, 2313, 2313, 2315, 2313, 2315, 2315, + 2315, 2315, 2317, 2315, 2317, 2317, 2317, 2317, 2319, 2317, 2319, 2319, + 2319, 2319, 2320, 2319, 2320, 2320, 2320, 2320, 2321, 2320, 2321, 2321, + 2321, 2321, 2322, 2321, 2322, 2322, 2322, 2322, 2324, 2322, 2324, 2324, + 2324, 2324, 2326, 2324, 2326, 2326, 2326, 2326, 2328, 2326, 2328, 2328, + 2328, 2328, 2330, 2328, 2330, 2330, 2330, 2330, 2332, 2330, 2332, 2332, + 2332, 2332, 2309, 2332, 2309, 2309, 2334, 2335, 2336, 2335, 2337, 2336, + 2336, 2337, 2338, 2337, 2339, 2338, 2338, 2339, 2340, 2339, 2341, 2340, + 2340, 2341, 2342, 2341, 2343, 2342, 2342, 2343, 2344, 2343, 2345, 2344, + 2344, 2345, 2346, 2345, 2347, 2346, 2346, 2347, 2348, 2347, 2349, 2348, + 2348, 2349, 2350, 2349, 2351, 2350, 2350, 2351, 2352, 2351, 2353, 2352, + 2352, 2353, 2354, 2353, 2355, 2354, 2354, 2355, 2356, 2355, 2357, 2356, + 2356, 2357, 2358, 2357, 2359, 2358, 2358, 2359, 2360, 2359, 2361, 2360, + 2360, 2361, 2362, 2361, 2363, 2362, 2362, 2363, 2364, 2363, 2365, 2364, + 2364, 2365, 2366, 2365, 2367, 2366, 2366, 2367, 2368, 2367, 2369, 2368, + 2368, 2369, 2334, 2369, 2335, 2334, 2334, 2334, 2336, 2334, 2336, 2336, + 2336, 2336, 2338, 2336, 2338, 2338, 2338, 2338, 2340, 2338, 2340, 2340, + 2340, 2340, 2342, 2340, 2342, 2342, 2342, 2342, 2344, 2342, 2344, 2344, + 2344, 2344, 2346, 2344, 2346, 2346, 2346, 2346, 2348, 2346, 2348, 2348, + 2348, 2348, 2350, 2348, 2350, 2350, 2350, 2350, 2352, 2350, 2352, 2352, + 2352, 2352, 2354, 2352, 2354, 2354, 2354, 2354, 2356, 2354, 2356, 2356, + 2356, 2356, 2358, 2356, 2358, 2358, 2358, 2358, 2360, 2358, 2360, 2360, + 2360, 2360, 2362, 2360, 2362, 2362, 2362, 2362, 2364, 2362, 2364, 2364, + 2364, 2364, 2366, 2364, 2366, 2366, 2366, 2366, 2368, 2366, 2368, 2368, + 2368, 2368, 2334, 2368, 2334, 2334, 2338, 2339, 2336, 2339, 2337, 2336, + 2336, 2337, 2370, 2337, 2371, 2370, 2370, 2371, 2372, 2371, 2373, 2372, + 2372, 2373, 2374, 2373, 2375, 2374, 2374, 2375, 2376, 2375, 2377, 2376, + 2376, 2377, 2378, 2377, 2379, 2378, 2378, 2379, 2380, 2379, 2381, 2380, + 2380, 2381, 2382, 2381, 2383, 2382, 2382, 2383, 2384, 2383, 2385, 2384, + 2384, 2385, 2386, 2385, 2387, 2386, 2386, 2387, 2338, 2387, 2339, 2338, + 2338, 2338, 2336, 2338, 2336, 2336, 2336, 2336, 2370, 2336, 2370, 2370, + 2370, 2370, 2372, 2370, 2372, 2372, 2372, 2372, 2374, 2372, 2374, 2374, + 2374, 2374, 2376, 2374, 2376, 2376, 2376, 2376, 2378, 2376, 2378, 2378, + 2378, 2378, 2380, 2378, 2380, 2380, 2380, 2380, 2382, 2380, 2382, 2382, + 2382, 2382, 2384, 2382, 2384, 2384, 2384, 2384, 2386, 2384, 2386, 2386, + 2386, 2386, 2338, 2386, 2338, 2338 + ] + }, + { + "id": "shape1_part2", + "type": "TRIANGLES", + "indices": [ + 40, 42, 44, 70, 72, 74, 76, 70, 74, 80, 82, 84, + 38, 32, 34, 38, 34, 36, 44, 46, 48, 40, 44, 48, + 28, 32, 38, 54, 56, 58, 54, 50, 52, 54, 48, 50, + 48, 54, 58, 60, 48, 58, 48, 60, 66, 62, 66, 60, + 66, 40, 48, 62, 64, 66, 30, 32, 28, 88, 90, 0, + 40, 26, 28, 4, 6, 8, 40, 70, 26, 40, 28, 38, + 24, 26, 76, 66, 68, 70, 66, 70, 40, 4, 10, 16, + 10, 4, 8, 14, 10, 12, 14, 16, 10, 24, 78, 22, + 70, 76, 26, 80, 86, 78, 86, 80, 84, 20, 86, 88, + 2, 20, 88, 2, 88, 0, 20, 78, 86, 78, 24, 76, + 20, 22, 78, 20, 16, 18, 2, 16, 20, 4, 16, 2, + 104, 100, 102, 98, 100, 104, 106, 96, 98, 106, 98, 104, + 106, 108, 92, 96, 106, 92, 96, 92, 94, 116, 118, 120, + 112, 114, 116, 110, 112, 116, 110, 116, 120, 148, 152, 146, + 152, 156, 158, 146, 142, 144, 150, 152, 148, 146, 158, 142, + 146, 152, 158, 154, 156, 152, 194, 190, 192, 208, 194, 196, + 208, 196, 198, 207, 198, 160, 208, 198, 207, 194, 188, 190, + 200, 194, 208, 200, 188, 194, 164, 206, 160, 164, 160, 162, + 206, 164, 166, 207, 160, 206, 200, 184, 188, 184, 186, 188, + 200, 201, 184, 184, 201, 202, 182, 184, 202, 174, 203, 204, + 176, 202, 203, 176, 203, 174, 178, 202, 176, 180, 182, 202, + 178, 180, 202, 172, 174, 204, 166, 205, 206, 170, 166, 168, + 170, 205, 166, 204, 205, 170, 172, 204, 170, 229, 209, 211, + 215, 229, 211, 215, 211, 213, 223, 219, 221, 217, 219, 223, + 225, 217, 223, 215, 217, 225, 227, 229, 215, 225, 227, 215, + 231, 32, 30, 251, 253, 255, 30, 28, 26, 233, 30, 26, + 235, 30, 233, 245, 247, 251, 249, 251, 247, 255, 245, 251, + 235, 243, 245, 255, 231, 30, 255, 235, 245, 235, 255, 30, + 235, 241, 243, 237, 239, 235, 239, 241, 235, 263, 257, 259, + 263, 259, 261, 265, 271, 257, 263, 265, 257, 267, 271, 265, + 269, 271, 267, 275, 277, 279, 273, 275, 279, 281, 283, 285, + 289, 281, 285, 289, 285, 287, 299, 303, 293, 291, 293, 303, + 293, 295, 299, 301, 303, 299, 297, 299, 295, 305, 307, 309, + 310, 305, 309, 311, 315, 317, 313, 315, 311, 347, 349, 351, + 365, 351, 353, 367, 347, 351, 363, 365, 353, 363, 353, 355, + 359, 355, 357, 361, 355, 359, 363, 355, 361, 365, 367, 351, + 345, 347, 367, 381, 383, 385, 387, 370, 385, 381, 385, 370, + 369, 370, 387, 371, 381, 370, 372, 379, 381, 371, 372, 381, + 373, 379, 372, 374, 377, 379, 373, 374, 379, 375, 377, 374, + 389, 395, 399, 391, 393, 389, 393, 395, 389, 397, 399, 395, + 409, 411, 413, 405, 409, 413, 405, 413, 415, 405, 415, 401, + 403, 405, 401, 407, 409, 405, 427, 429, 431, 423, 427, 431, + 425, 427, 423, 423, 431, 433, 421, 423, 433, 421, 433, 417, + 419, 421, 417, 436, 438, 440, 442, 436, 440, 435, 436, 442, + 450, 435, 442, 450, 442, 444, 449, 450, 444, 449, 444, 446, + 448, 449, 446, 472, 474, 475, 468, 470, 472, 477, 472, 475, + 477, 475, 476, 466, 468, 472, 466, 472, 477, 464, 466, 477, + 464, 477, 478, 480, 478, 479, 452, 480, 451, 452, 478, 480, + 462, 464, 478, 478, 454, 462, 452, 454, 478, 460, 462, 454, + 458, 460, 454, 456, 458, 454, 295, 481, 483, 293, 481, 295, + 487, 303, 301, 301, 299, 297, 485, 487, 301, 485, 301, 297, + 495, 491, 493, 489, 491, 495, 493, 499, 501, 497, 499, 493, + 495, 493, 501, 497, 503, 499, 507, 503, 497, 505, 507, 497, + 513, 515, 517, 521, 513, 517, 521, 517, 519, 511, 513, 521, + 511, 521, 509, 545, 523, 525, 545, 525, 527, 547, 523, 545, + 543, 545, 527, 527, 529, 531, 535, 531, 533, 531, 543, 527, + 535, 543, 531, 535, 541, 543, 539, 541, 535, 539, 535, 537, + 555, 114, 112, 557, 112, 110, 559, 555, 112, 559, 112, 557, + 553, 555, 559, 559, 551, 553, 561, 551, 559, 561, 549, 551, + 563, 549, 561, 571, 573, 549, 563, 571, 549, 565, 571, 563, + 569, 571, 565, 567, 569, 565, 583, 579, 581, 589, 579, 583, + 587, 589, 583, 587, 583, 585, 591, 579, 589, 595, 597, 599, + 601, 595, 599, 575, 591, 606, 579, 575, 577, 591, 575, 579, + 606, 591, 593, 606, 593, 595, 605, 606, 595, 605, 595, 601, + 605, 601, 603, 611, 579, 607, 611, 607, 609, 581, 579, 611, + 613, 581, 611, 620, 621, 615, 619, 620, 615, 617, 619, 615, + 622, 624, 605, 622, 605, 603, 627, 629, 631, 625, 627, 631, + 635, 624, 622, 636, 624, 635, 639, 633, 635, 622, 637, 639, + 639, 635, 622, 648, 643, 645, 648, 645, 647, 643, 648, 649, + 655, 643, 649, 655, 649, 651, 641, 643, 655, 653, 655, 651, + 674, 668, 670, 672, 674, 670, 676, 674, 672, 120, 676, 672, + 118, 676, 120, 684, 668, 678, 684, 678, 680, 682, 684, 680, + 686, 668, 684, 670, 668, 686, 694, 696, 698, 704, 692, 702, + 690, 704, 688, 690, 692, 704, 694, 700, 702, 694, 698, 700, + 702, 692, 694, 720, 721, 694, 720, 694, 692, 719, 720, 692, + 712, 719, 692, 708, 712, 692, 706, 708, 692, 710, 712, 708, + 716, 719, 712, 714, 716, 712, 718, 719, 716, 732, 734, 736, + 728, 730, 732, 742, 724, 736, 732, 736, 724, 728, 732, 724, + 736, 738, 740, 740, 742, 736, 726, 728, 724, 754, 748, 750, + 754, 750, 752, 722, 724, 754, 742, 744, 746, 742, 748, 724, + 746, 748, 742, 754, 724, 748, 722, 754, 756, 764, 766, 768, + 758, 760, 762, 764, 768, 770, 772, 758, 762, 774, 758, 772, + 770, 772, 762, 770, 762, 764, 768, 778, 780, 768, 780, 782, + 770, 768, 782, 782, 784, 776, 770, 782, 776, 780, 786, 788, + 784, 780, 788, 782, 780, 784, 790, 784, 788, 796, 776, 792, + 790, 792, 784, 776, 784, 792, 794, 796, 792, 830, 832, 834, + 838, 834, 836, 840, 842, 844, 820, 824, 826, 822, 824, 820, + 818, 820, 826, 816, 818, 826, 840, 814, 816, 814, 844, 812, + 826, 828, 830, 838, 826, 830, 838, 830, 834, 826, 838, 840, + 826, 840, 816, 810, 812, 848, 840, 844, 814, 846, 812, 844, + 848, 812, 846, 726, 724, 722, 726, 848, 728, 790, 786, 726, + 726, 780, 848, 780, 810, 848, 722, 790, 726, 788, 786, 790, + 810, 778, 808, 780, 726, 786, 780, 778, 810, 806, 808, 778, + 766, 802, 806, 804, 806, 802, 850, 790, 722, 802, 760, 800, + 806, 778, 766, 766, 778, 768, 792, 790, 850, 766, 760, 802, + 760, 766, 764, 762, 760, 764, 798, 800, 760, 758, 798, 760, + 868, 870, 852, 864, 866, 868, 864, 868, 856, 854, 868, 852, + 856, 868, 854, 862, 864, 856, 856, 858, 860, 862, 856, 860, + 882, 884, 886, 880, 882, 886, 888, 864, 862, 888, 880, 886, + 862, 880, 888, 862, 876, 880, 878, 880, 876, 872, 876, 862, + 874, 876, 872, 894, 896, 898, 892, 898, 890, 894, 898, 892, + 904, 906, 900, 902, 904, 900, 913, 908, 910, 913, 910, 912, + 916, 914, 915, 917, 914, 916, 906, 918, 920, 900, 906, 920, + 908, 924, 926, 910, 908, 926, 922, 924, 908, 936, 928, 930, + 936, 930, 932, 858, 936, 932, 932, 904, 858, 904, 932, 934, + 860, 904, 902, 860, 858, 904, 946, 948, 950, 952, 946, 950, + 960, 954, 956, 960, 956, 958, 940, 942, 944, 940, 944, 946, + 918, 938, 940, 920, 918, 940, 966, 920, 940, 940, 946, 952, + 940, 952, 954, 964, 966, 962, 940, 960, 966, 954, 960, 940, + 962, 966, 960, 972, 974, 968, 972, 968, 928, 970, 972, 928, + 970, 928, 936, 389, 974, 972, 391, 389, 972, 391, 972, 970, + 976, 391, 970, 978, 391, 976, 870, 976, 970, 870, 970, 852, + 866, 976, 870, 866, 870, 868, 988, 399, 397, 986, 988, 397, + 980, 985, 986, 397, 980, 986, 984, 980, 982, 985, 980, 984, + 993, 997, 999, 993, 999, 990, 995, 997, 993, 991, 993, 990, + 930, 968, 997, 930, 997, 995, 930, 995, 1000, 928, 968, 930, + 1006, 1030, 1002, 1004, 1006, 1002, 1006, 1028, 1030, 1024, 1028, 1006, + 1026, 1028, 1024, 1022, 1024, 1006, 1020, 1022, 1006, 1020, 1006, 1008, + 1010, 1020, 1008, 1018, 1020, 1010, 1018, 1014, 1016, 1010, 1012, 1018, + 1012, 1014, 1018, 1034, 1036, 1037, 1032, 1034, 1037, 1037, 1038, 1040, + 1032, 1037, 1040, 1046, 1042, 1044, 607, 1042, 1046, 609, 607, 1046, + 609, 1046, 1048, 1055, 1059, 1051, 1055, 1051, 1053, 1049, 1051, 1059, + 1057, 1059, 1055, 1004, 1002, 1061, 1004, 1061, 1049, 1059, 1004, 1049, + 1008, 1059, 1057, 1006, 1004, 1059, 1008, 1006, 1059, 1077, 1081, 1083, + 1079, 1081, 1077, 1067, 1077, 1083, 1063, 1067, 1083, 1071, 1077, 1067, + 1069, 1071, 1067, 1073, 1077, 1071, 1075, 1077, 1073, 1065, 1067, 1063, + 1083, 1081, 1085, 1083, 1085, 1087, 1089, 1085, 1081, 1095, 1097, 1099, + 1042, 1091, 1093, 1042, 1093, 1095, 1109, 1095, 1099, 1109, 1099, 1101, + 1042, 1095, 1109, 1044, 1042, 1109, 1087, 1101, 1103, 1105, 1109, 1101, + 1105, 1101, 1087, 1085, 1105, 1087, 1107, 1109, 1105, 1119, 1065, 1063, + 1119, 1063, 1111, 1113, 1119, 1111, 1117, 1119, 1113, 1115, 1117, 1113, + 1125, 1075, 1073, 1123, 1075, 1125, 1113, 1127, 1115, 1127, 1129, 1115, + 1113, 1121, 1127, 1123, 1125, 1127, 1121, 1123, 1127, 1055, 1123, 1121, + 1053, 1123, 1055, 1133, 1135, 1137, 1141, 1131, 1137, 1141, 1137, 1139, + 1133, 1137, 1131, 1149, 1151, 1153, 1145, 1147, 1149, 1149, 1153, 1155, + 1145, 1149, 1155, 1143, 1145, 1155, 1141, 1139, 1145, 1141, 1145, 1143, + 1159, 1161, 409, 407, 1159, 409, 1159, 407, 1157, 1133, 1161, 1159, + 1133, 1159, 1135, 1243, 1245, 1247, 1243, 1247, 1249, 1237, 1239, 1241, + 1235, 1237, 1241, 1249, 1251, 1253, 1253, 1243, 1249, 1255, 1243, 1253, + 1241, 1243, 1255, 1227, 1229, 1231, 1233, 1227, 1231, 1221, 1223, 1225, + 1219, 1221, 1225, 1267, 1273, 1279, 1271, 1267, 1269, 1273, 1267, 1271, + 1273, 1275, 1277, 1279, 1273, 1277, 1281, 1267, 1279, 1283, 1267, 1281, + 1213, 1215, 1217, 1211, 1213, 1217, 1285, 1287, 1289, 1207, 1209, 1219, + 1217, 1219, 1209, 1211, 1217, 1209, 1235, 1241, 1255, 1225, 1207, 1219, + 1225, 1227, 1255, 1255, 1207, 1225, 1207, 1283, 1205, 1233, 1235, 1255, + 1255, 1227, 1233, 1257, 1207, 1255, 1257, 1261, 1207, 1259, 1261, 1257, + 1261, 1265, 1207, 1263, 1265, 1261, 1267, 1207, 1265, 1283, 1207, 1267, + 1295, 1289, 1291, 1295, 1291, 1293, 1205, 1289, 1201, 1285, 1205, 1283, + 1289, 1205, 1285, 1199, 1201, 1289, 1203, 1205, 1201, 1289, 1179, 1199, + 1295, 1169, 1289, 1165, 1169, 1295, 1163, 1165, 1295, 1167, 1169, 1165, + 1169, 1171, 1289, 1171, 1177, 1289, 1177, 1171, 1173, 1175, 1177, 1173, + 1177, 1179, 1289, 1185, 1199, 1179, 1185, 1179, 1181, 1183, 1185, 1181, + 1187, 1199, 1185, 1187, 1197, 1199, 1191, 1187, 1189, 1191, 1197, 1187, + 1197, 1191, 1193, 1195, 1197, 1193, 1303, 1305, 1307, 1307, 1309, 1311, + 1313, 1307, 1311, 1315, 1297, 1299, 1301, 1315, 1299, 1303, 1313, 1315, + 1303, 1307, 1313, 1315, 1301, 1303, 1319, 1321, 1323, 1317, 1319, 1323, + 1326, 1327, 1329, 1331, 1326, 1329, 1325, 1326, 1331, 1339, 1335, 1337, + 1339, 1333, 1335, 1340, 1333, 1339, 1341, 1333, 1340, 1343, 1345, 1347, + 1327, 1343, 1347, 1351, 1329, 1327, 1347, 1349, 1351, 1351, 1327, 1347, + 1331, 1329, 1351, 1535, 1537, 1539, 1543, 1539, 1541, 1535, 1539, 1543, + 1533, 1535, 1543, 1533, 1547, 1531, 1543, 1545, 1533, 1545, 1547, 1533, + 1549, 1531, 1547, 1557, 1559, 1551, 1553, 1555, 1557, 1553, 1557, 1551, + 1564, 1566, 1568, 1570, 1564, 1568, 1562, 1564, 1570, 1572, 1561, 1562, + 1572, 1562, 1570, 1581, 1553, 1551, 1573, 1581, 1551, 1577, 1573, 1575, + 1579, 1581, 1573, 1577, 1579, 1573, 1566, 1579, 1577, 1568, 1566, 1577, + 1583, 1585, 1587, 1597, 1583, 1587, 1597, 1587, 1589, 1591, 1595, 1589, + 1597, 1589, 1595, 1593, 1595, 1591, 1559, 1583, 1597, 1551, 1559, 1597, + 1551, 1597, 1595, 1573, 1551, 1595, 1599, 1573, 1595, 1593, 1599, 1595, + 1575, 1573, 1599, 1624, 1626, 1628, 1620, 1624, 1628, 1605, 1601, 1603, + 1601, 1620, 1628, 1620, 1601, 1605, 1622, 1624, 1620, 1618, 1620, 1605, + 1605, 1616, 1618, 1607, 1609, 1605, 1609, 1616, 1605, 1612, 1616, 1609, + 1612, 1609, 1611, 1613, 1616, 1612, 1614, 1616, 1613, 1638, 1636, 1637, + 1634, 1636, 1638, 1630, 1639, 1640, 1639, 1634, 1638, 1632, 1639, 1630, + 1632, 1634, 1639, 1657, 1659, 1641, 1643, 1657, 1641, 1655, 1657, 1643, + 1651, 1645, 1647, 1649, 1651, 1647, 1653, 1645, 1651, 1643, 1645, 1653, + 1655, 1643, 1653, 1653, 1665, 1655, 1667, 1655, 1665, 209, 1667, 1665, + 211, 209, 1665, 1653, 1663, 1665, 1661, 1663, 1653, 221, 1663, 1661, + 219, 1663, 221, 1671, 1677, 1679, 1669, 1671, 1679, 1659, 1669, 1679, + 1641, 1659, 1679, 1671, 1673, 1677, 1675, 1677, 1673, 1649, 1647, 1677, + 1675, 1649, 1677, 1681, 1683, 1685, 1687, 1681, 1685, 1671, 1681, 1687, + 1695, 1689, 1691, 1693, 1695, 1691, 1673, 1689, 1695, 1687, 1689, 1673, + 1671, 1687, 1673, 1723, 1725, 1727, 1721, 1723, 1727, 1711, 1715, 1717, + 1711, 1717, 1719, 1713, 1715, 1711, 1721, 1727, 1729, 1703, 1705, 1707, + 1703, 1707, 1709, 1697, 1699, 1701, 1697, 1701, 1703, 1697, 1703, 1709, + 1697, 1709, 1711, 1729, 1697, 1711, 1719, 1729, 1711, 1729, 1719, 1721, + 1732, 1734, 1731, 1733, 1734, 1732, 1737, 1738, 1735, 1737, 1735, 1736, + 1742, 1743, 1745, 1741, 1739, 1740, 1742, 1745, 1739, 1741, 1742, 1739, + 1767, 1769, 1747, 1749, 1767, 1747, 1683, 1767, 1749, 1685, 1683, 1749, + 1685, 1749, 1751, 1757, 1751, 1753, 1755, 1757, 1753, 1757, 1691, 1685, + 1757, 1685, 1751, 1691, 1757, 1759, 1765, 1761, 1763, 1759, 1761, 1765, + 1693, 1759, 1765, 1691, 1759, 1693, 1769, 1777, 1779, 1775, 1769, 1779, + 1747, 1769, 1775, 1781, 1775, 1779, 1773, 1775, 1781, 1753, 1771, 1773, + 1773, 1791, 1753, 1755, 1753, 1791, 1783, 1773, 1781, 1783, 1791, 1773, + 1793, 1755, 1791, 1785, 1789, 1791, 1785, 1791, 1783, 1787, 1789, 1785, + 1763, 1789, 1787, 1761, 1789, 1763, 1799, 1801, 1795, 1797, 1799, 1795, + 1807, 1809, 1811, 1811, 1803, 1805, 1807, 1811, 1805, 1815, 1817, 1819, + 1813, 1815, 1819, 1813, 1819, 1820, 1795, 1821, 1815, 1795, 1815, 1813, + 1797, 1795, 1813, 227, 1829, 1831, 225, 1823, 227, 1823, 1829, 227, + 1825, 1829, 1823, 1827, 1829, 1825, 1835, 1837, 1699, 1803, 1835, 1699, + 1833, 1835, 1803, 1838, 1803, 1699, 1697, 1838, 1699, 1805, 1803, 1838, + 1852, 1854, 1856, 1846, 1848, 1850, 1858, 1850, 1852, 1858, 1852, 1856, + 1846, 1850, 1858, 1862, 1846, 1858, 1862, 1858, 1860, 1862, 1844, 1846, + 1842, 1862, 1840, 1842, 1844, 1862, 1868, 1870, 1864, 1866, 1868, 1864, + 1874, 1876, 1878, 1872, 1874, 1878, 1884, 1886, 1887, 1880, 1882, 1884, + 1880, 1884, 1887, 1864, 1876, 1874, 1888, 1866, 1864, 1888, 1864, 1874, + 1850, 267, 265, 1850, 1892, 267, 1850, 1890, 1892, 1850, 265, 1852, + 1848, 1890, 1850, 1894, 1842, 1840, 1894, 1840, 1898, 1896, 1842, 1894, + 1872, 1894, 1898, 1898, 1882, 1880, 1878, 1894, 1872, 1872, 1898, 1880, + 1902, 1904, 1906, 1908, 1902, 1906, 1900, 1902, 1908, 1910, 1900, 1908, + 1912, 1914, 1904, 1902, 1912, 1904, 1916, 1912, 1902, 1900, 1916, 1902, + 1918, 1922, 1914, 1920, 1922, 1918, 1914, 1926, 1918, 1912, 1926, 1914, + 1916, 1926, 1912, 1924, 1926, 1916, 1924, 1918, 1926, 1934, 1936, 1938, + 1918, 1932, 1938, 1918, 1938, 1920, 1932, 1918, 1924, 1934, 1938, 1932, + 1930, 1932, 1924, 1928, 1930, 1924, 1940, 1946, 1948, 1950, 1940, 1948, + 1942, 1946, 1940, 1944, 1946, 1942, 1958, 1960, 1934, 1958, 1934, 1932, + 1930, 1952, 1958, 1956, 1958, 1952, 1954, 1956, 1952, 1946, 1928, 1948, + 1932, 1930, 1958, 1928, 1952, 1930, 1944, 1928, 1946, 1928, 1944, 1952, + 283, 1962, 1963, 283, 1963, 1965, 283, 1965, 1967, 285, 283, 1967, + 1973, 1979, 281, 1977, 1979, 1973, 1975, 1977, 1973, 289, 1973, 281, + 1971, 289, 1969, 1971, 1973, 289, 1981, 1640, 1980, 1630, 1640, 1981, + 1531, 1630, 1981, 1531, 1981, 1533, 1632, 1630, 1531, 1982, 1983, 1984, + 1982, 511, 509, 625, 1982, 1984, 625, 1984, 1986, 1982, 631, 511, + 625, 631, 1982, 1990, 1992, 1994, 1988, 491, 489, 1990, 1994, 491, + 1988, 1990, 491, 2008, 2010, 2012, 2008, 2012, 2014, 2004, 2006, 2008, + 2000, 2002, 2004, 2004, 2018, 1996, 2014, 2004, 2008, 2000, 2004, 1996, + 1998, 2000, 1996, 2014, 2016, 2018, 2018, 2004, 2014, 1996, 2018, 2020, + 2104, 2098, 2100, 2102, 2104, 2100, 2094, 2098, 2104, 2096, 2098, 2094, + 2094, 2104, 2106, 2106, 2092, 2094, 2092, 2106, 2107, 2084, 2080, 2082, + 2086, 2078, 2080, 2086, 2072, 2078, 2086, 2080, 2084, 2078, 2074, 2076, + 2088, 2072, 2086, 2072, 2074, 2078, 2108, 2092, 2107, 2058, 2062, 2066, + 2062, 2058, 2060, 2058, 2052, 2056, 2064, 2066, 2062, 2070, 2072, 2088, + 2070, 2088, 2090, 2066, 2048, 2050, 2052, 2054, 2056, 2066, 2052, 2058, + 2066, 2050, 2052, 2108, 2110, 2090, 2108, 2090, 2092, 2042, 2044, 2046, + 2040, 2036, 2038, 2042, 2034, 2036, 2112, 2068, 2070, 2110, 2112, 2070, + 2110, 2070, 2090, 2028, 2032, 2034, 2042, 2036, 2040, 2034, 2042, 2046, + 2026, 2028, 2034, 2030, 2032, 2028, 2046, 2026, 2034, 2026, 2046, 2114, + 2022, 2026, 2114, 2024, 2026, 2022, 2048, 2066, 2068, 2048, 2068, 2112, + 2112, 2046, 2048, 2112, 2114, 2046, 2116, 2022, 2114, 2120, 311, 317, + 2120, 317, 2118, 2125, 2120, 2118, 2127, 2120, 2125, 882, 982, 2130, + 878, 882, 880, 882, 984, 982, 878, 984, 882, 2132, 984, 878, + 874, 878, 876, 2132, 878, 874, 2136, 2133, 2135, 2137, 2133, 2136, + 515, 2133, 2137, 517, 515, 2137, 2145, 547, 545, 2139, 545, 543, + 2145, 545, 2139, 2143, 2141, 2142, 2145, 2139, 2141, 2143, 2145, 2141, + 1986, 2146, 2148, 1984, 2146, 1986, 641, 1986, 2148, 641, 2148, 643, + 621, 2151, 2145, 621, 2145, 2143, 615, 621, 2143, 2149, 615, 2143, + 2150, 615, 2149, 2162, 2164, 2160, 2162, 2160, 2161, 2163, 2157, 2164, + 2163, 2164, 2162, 2167, 2175, 2177, 2178, 2167, 2177, 2165, 2167, 2178, + 2165, 2178, 2179, 2169, 2175, 2167, 2169, 2173, 2175, 2171, 2173, 2169, + 2172, 2173, 2171, 2184, 2185, 2186, 2186, 2187, 2188, 1579, 1564, 2188, + 1579, 2188, 1581, 1564, 1579, 1566, 1562, 2188, 1564, 1562, 2182, 2184, + 2183, 2184, 2182, 2186, 2188, 1562, 1562, 2184, 2186, 2180, 2182, 1562, + 2181, 2182, 2180, 1561, 2180, 1562, 2191, 2192, 2194, 2191, 2194, 2189, + 2190, 2191, 2189, 2224, 2226, 2228, 2208, 2210, 2212, 2214, 2208, 2212, + 2232, 2228, 2230, 2206, 2207, 2208, 2220, 2222, 2232, 2228, 2222, 2224, + 2232, 2222, 2228, 2232, 2218, 2220, 2234, 2218, 2232, 2216, 2218, 2234, + 2214, 2216, 2234, 2234, 2206, 2214, 2214, 2206, 2208, 2206, 2234, 2236, + 2205, 2206, 2236, 2244, 2240, 2242, 2244, 2256, 2238, 2244, 2238, 2240, + 2246, 2256, 2244, 2248, 2256, 2246, 2254, 2256, 2248, 2250, 2254, 2248, + 2252, 2254, 2250, 2262, 2259, 2260, 2258, 2259, 2262, 2264, 2258, 2262, + 2281, 2267, 2279, 2266, 2267, 2281, 2268, 2269, 2271, 2267, 2268, 2271, + 2273, 2277, 2271, 2275, 2277, 2273, 2277, 2267, 2271, 2279, 2267, 2277, + 2287, 2289, 2291, 2307, 2283, 2285, 2307, 2285, 2287, 2305, 2307, 2287, + 2303, 2305, 2287, 2287, 2291, 2293, 2301, 2303, 2287, 2293, 2299, 2301, + 2287, 2293, 2301, 2295, 2299, 2293, 2299, 2295, 2297, 2322, 2324, 2326, + 2317, 2326, 2328, 2317, 2328, 2330, 2322, 2326, 2317, 2319, 2322, 2317, + 2330, 2309, 2317, 2320, 2322, 2319, 2321, 2322, 2320, 2332, 2309, 2330, + 2315, 2317, 2309, 2311, 2315, 2309, 2313, 2315, 2311, 2368, 2334, 2336, + 2364, 2366, 2336, 2342, 2338, 2340, 2342, 2344, 2338, 2344, 2346, 2338, + 2336, 2338, 2364, 2336, 2366, 2368, 2338, 2346, 2364, 2346, 2362, 2364, + 2348, 2362, 2346, 2360, 2362, 2348, 2350, 2358, 2360, 2348, 2350, 2360, + 2352, 2358, 2350, 2356, 2358, 2352, 2354, 2356, 2352, 2372, 2384, 2370, + 2374, 2376, 2372, 2376, 2378, 2372, 2378, 2380, 2372, 2380, 2382, 2372, + 2382, 2384, 2372, 2386, 2370, 2384, 2338, 2370, 2386, 2336, 2370, 2338 + ] + }, + { + "id": "shape1_part3", + "type": "TRIANGLES", + "indices": [ + 122, 123, 124, 123, 125, 124, 124, 125, 126, 125, 127, 126, + 126, 127, 128, 127, 129, 128, 128, 129, 130, 129, 131, 130, + 130, 131, 132, 131, 133, 132, 132, 133, 134, 133, 135, 134, + 134, 135, 136, 135, 137, 136, 136, 137, 138, 137, 139, 138, + 138, 139, 140, 139, 141, 140, 140, 141, 122, 141, 123, 122, + 122, 122, 124, 122, 124, 124, 124, 124, 126, 124, 126, 126, + 126, 126, 128, 126, 128, 128, 128, 128, 130, 128, 130, 130, + 130, 130, 132, 130, 132, 132, 132, 132, 134, 132, 134, 134, + 134, 134, 136, 134, 136, 136, 136, 136, 138, 136, 138, 138, + 138, 138, 140, 138, 140, 140, 140, 140, 122, 140, 122, 122, + 325, 319, 321, 323, 325, 321, 329, 331, 333, 329, 333, 335, + 337, 329, 335, 327, 329, 337, 343, 339, 340, 343, 340, 341, + 657, 658, 659, 658, 514, 659, 659, 514, 660, 514, 512, 660, + 660, 512, 661, 512, 632, 661, 661, 632, 662, 632, 630, 662, + 662, 630, 663, 630, 628, 663, 663, 628, 664, 628, 665, 664, + 664, 665, 666, 665, 667, 666, 666, 667, 657, 667, 658, 657, + 657, 657, 659, 657, 659, 659, 659, 659, 660, 659, 660, 660, + 660, 660, 661, 660, 661, 661, 661, 661, 662, 661, 662, 662, + 662, 662, 663, 662, 663, 663, 663, 663, 664, 663, 664, 664, + 664, 664, 666, 664, 666, 666, 666, 666, 657, 666, 657, 657, + 657, 659, 660, 661, 657, 660, 662, 657, 661, 666, 657, 662, + 664, 666, 662, 664, 662, 663, 1367, 1363, 1365, 1371, 1367, 1369, + 1367, 1361, 1363, 1371, 1361, 1367, 1357, 1359, 1361, 1371, 1357, 1361, + 1355, 1357, 1371, 1381, 1353, 1355, 1379, 1355, 1371, 1379, 1371, 1373, + 1381, 1355, 1379, 1377, 1379, 1373, 1375, 1377, 1373, 1389, 1385, 1387, + 1383, 1385, 1389, 1403, 1395, 1397, 1395, 1391, 1393, 1405, 1395, 1403, + 1405, 1391, 1395, 1403, 1397, 1399, 1401, 1403, 1399, 1413, 1407, 1409, + 1411, 1413, 1409, 1415, 1417, 1419, 1421, 1423, 1419, 1419, 1423, 1425, + 1427, 1439, 1425, 1439, 1419, 1425, 1415, 1419, 1439, 1441, 1447, 1415, + 1441, 1415, 1439, 1437, 1439, 1427, 1443, 1445, 1447, 1443, 1447, 1441, + 1431, 1427, 1429, 1433, 1437, 1427, 1431, 1433, 1427, 1435, 1437, 1433, + 1453, 1455, 1456, 1451, 1453, 1456, 1451, 1456, 1449, 1502, 1457, 1459, + 1500, 1459, 1461, 1459, 1500, 1502, 1498, 1461, 1463, 1498, 1500, 1461, + 1499, 1500, 1498, 1465, 1497, 1498, 1465, 1498, 1463, 1497, 1465, 1467, + 1471, 1497, 1467, 1471, 1467, 1469, 1495, 1497, 1471, 1473, 1492, 1495, + 1473, 1495, 1471, 1492, 1473, 1475, 1493, 1495, 1492, 1479, 1475, 1477, + 1481, 1492, 1475, 1481, 1475, 1479, 1481, 1483, 1492, 1489, 1483, 1485, + 1489, 1485, 1487, 1483, 1491, 1492, 1489, 1491, 1483, 1519, 1529, 1504, + 1520, 1529, 1519, 1527, 1529, 1520, 1525, 1527, 1520, 1520, 1522, 1525, + 1521, 1522, 1520, 1505, 1518, 1504, 1519, 1504, 1518, 1524, 1525, 1522, + 1524, 1522, 1523, 1516, 1518, 1505, 1517, 1518, 1516, 1516, 1505, 1506, + 1513, 1511, 1512, 1515, 1516, 1506, 1508, 1510, 1511, 1508, 1511, 1513, + 1514, 1508, 1513, 1507, 1508, 1514, 1507, 1514, 1515, 1507, 1515, 1506 + ] + }, + { + "id": "shape1_part4", + "type": "TRIANGLES", + "indices": [ + 128, 130, 132, 136, 128, 132, 136, 132, 134, 126, 128, 136, + 138, 140, 124, 126, 138, 124, 122, 124, 140, 136, 138, 126 + ] + }, + { + "id": "shape1_part5", + "type": "TRIANGLES", + "indices": [ + 319, 320, 321, 320, 322, 321, 321, 322, 323, 322, 324, 323, + 323, 324, 325, 324, 326, 325, 325, 326, 319, 326, 320, 319, + 319, 319, 321, 319, 321, 321, 321, 321, 323, 321, 323, 323, + 323, 323, 325, 323, 325, 325, 325, 325, 319, 325, 319, 319, + 324, 322, 320, 326, 324, 320, 327, 328, 329, 328, 330, 329, + 329, 330, 331, 330, 332, 331, 331, 332, 333, 332, 334, 333, + 333, 334, 335, 334, 336, 335, 335, 336, 337, 336, 338, 337, + 337, 338, 327, 338, 328, 327, 327, 327, 329, 327, 329, 329, + 329, 329, 331, 329, 331, 331, 331, 331, 333, 331, 333, 333, + 333, 333, 335, 333, 335, 335, 335, 335, 337, 335, 337, 337, + 337, 337, 327, 337, 327, 327, 339, 328, 340, 328, 338, 340, + 340, 338, 341, 338, 342, 341, 341, 342, 343, 342, 344, 343, + 343, 344, 339, 344, 328, 339, 339, 339, 340, 339, 340, 340, + 340, 340, 341, 340, 341, 341, 341, 341, 343, 341, 343, 343, + 343, 343, 339, 343, 339, 339, 1353, 1354, 1355, 1354, 1356, 1355, + 1355, 1356, 1357, 1356, 1358, 1357, 1357, 1358, 1359, 1358, 1360, 1359, + 1359, 1360, 1361, 1360, 1362, 1361, 1361, 1362, 1363, 1362, 1364, 1363, + 1363, 1364, 1365, 1364, 1366, 1365, 1365, 1366, 1367, 1366, 1368, 1367, + 1367, 1368, 1369, 1368, 1370, 1369, 1369, 1370, 1371, 1370, 1372, 1371, + 1371, 1372, 1373, 1372, 1374, 1373, 1373, 1374, 1375, 1374, 1376, 1375, + 1375, 1376, 1377, 1376, 1378, 1377, 1377, 1378, 1379, 1378, 1380, 1379, + 1379, 1380, 1381, 1380, 1382, 1381, 1381, 1382, 1353, 1382, 1354, 1353, + 1353, 1353, 1355, 1353, 1355, 1355, 1355, 1355, 1357, 1355, 1357, 1357, + 1357, 1357, 1359, 1357, 1359, 1359, 1359, 1359, 1361, 1359, 1361, 1361, + 1361, 1361, 1363, 1361, 1363, 1363, 1363, 1363, 1365, 1363, 1365, 1365, + 1365, 1365, 1367, 1365, 1367, 1367, 1367, 1367, 1369, 1367, 1369, 1369, + 1369, 1369, 1371, 1369, 1371, 1371, 1371, 1371, 1373, 1371, 1373, 1373, + 1373, 1373, 1375, 1373, 1375, 1375, 1375, 1375, 1377, 1375, 1377, 1377, + 1377, 1377, 1379, 1377, 1379, 1379, 1379, 1379, 1381, 1379, 1381, 1381, + 1381, 1381, 1353, 1381, 1353, 1353, 1383, 1384, 1385, 1384, 1386, 1385, + 1385, 1386, 1387, 1386, 1388, 1387, 1387, 1388, 1389, 1388, 1390, 1389, + 1389, 1390, 1383, 1390, 1384, 1383, 1383, 1383, 1385, 1383, 1385, 1385, + 1385, 1385, 1387, 1385, 1387, 1387, 1387, 1387, 1389, 1387, 1389, 1389, + 1389, 1389, 1383, 1389, 1383, 1383, 1391, 1392, 1393, 1392, 1394, 1393, + 1393, 1394, 1395, 1394, 1396, 1395, 1395, 1396, 1397, 1396, 1398, 1397, + 1397, 1398, 1399, 1398, 1400, 1399, 1399, 1400, 1401, 1400, 1402, 1401, + 1401, 1402, 1403, 1402, 1404, 1403, 1403, 1404, 1405, 1404, 1406, 1405, + 1405, 1406, 1391, 1406, 1392, 1391, 1391, 1391, 1393, 1391, 1393, 1393, + 1393, 1393, 1395, 1393, 1395, 1395, 1395, 1395, 1397, 1395, 1397, 1397, + 1397, 1397, 1399, 1397, 1399, 1399, 1399, 1399, 1401, 1399, 1401, 1401, + 1401, 1401, 1403, 1401, 1403, 1403, 1403, 1403, 1405, 1403, 1405, 1405, + 1405, 1405, 1391, 1405, 1391, 1391, 1407, 1408, 1409, 1408, 1410, 1409, + 1409, 1410, 1411, 1410, 1412, 1411, 1411, 1412, 1413, 1412, 1414, 1413, + 1413, 1414, 1407, 1414, 1408, 1407, 1407, 1407, 1409, 1407, 1409, 1409, + 1409, 1409, 1411, 1409, 1411, 1411, 1411, 1411, 1413, 1411, 1413, 1413, + 1413, 1413, 1407, 1413, 1407, 1407, 1415, 1416, 1417, 1416, 1418, 1417, + 1417, 1418, 1419, 1418, 1420, 1419, 1419, 1420, 1421, 1420, 1422, 1421, + 1421, 1422, 1423, 1422, 1424, 1423, 1423, 1424, 1425, 1424, 1426, 1425, + 1425, 1426, 1427, 1426, 1428, 1427, 1427, 1428, 1429, 1428, 1430, 1429, + 1429, 1430, 1431, 1430, 1432, 1431, 1431, 1432, 1433, 1432, 1434, 1433, + 1433, 1434, 1435, 1434, 1436, 1435, 1435, 1436, 1437, 1436, 1438, 1437, + 1437, 1438, 1439, 1438, 1440, 1439, 1439, 1440, 1441, 1440, 1442, 1441, + 1441, 1442, 1443, 1442, 1444, 1443, 1443, 1444, 1445, 1444, 1446, 1445, + 1445, 1446, 1447, 1446, 1448, 1447, 1447, 1448, 1415, 1448, 1416, 1415, + 1415, 1415, 1417, 1415, 1417, 1417, 1417, 1417, 1419, 1417, 1419, 1419, + 1419, 1419, 1421, 1419, 1421, 1421, 1421, 1421, 1423, 1421, 1423, 1423, + 1423, 1423, 1425, 1423, 1425, 1425, 1425, 1425, 1427, 1425, 1427, 1427, + 1427, 1427, 1429, 1427, 1429, 1429, 1429, 1429, 1431, 1429, 1431, 1431, + 1431, 1431, 1433, 1431, 1433, 1433, 1433, 1433, 1435, 1433, 1435, 1435, + 1435, 1435, 1437, 1435, 1437, 1437, 1437, 1437, 1439, 1437, 1439, 1439, + 1439, 1439, 1441, 1439, 1441, 1441, 1441, 1441, 1443, 1441, 1443, 1443, + 1443, 1443, 1445, 1443, 1445, 1445, 1445, 1445, 1447, 1445, 1447, 1447, + 1447, 1447, 1415, 1447, 1415, 1415, 1449, 1450, 1451, 1450, 1452, 1451, + 1451, 1452, 1453, 1452, 1454, 1453, 1453, 1454, 1455, 1454, 1367, 1455, + 1455, 1367, 1456, 1367, 1369, 1456, 1456, 1369, 1449, 1369, 1450, 1449, + 1449, 1449, 1451, 1449, 1451, 1451, 1451, 1451, 1453, 1451, 1453, 1453, + 1453, 1453, 1455, 1453, 1455, 1455, 1455, 1455, 1456, 1455, 1456, 1456, + 1456, 1456, 1449, 1456, 1449, 1449, 1450, 1369, 1367, 1450, 1367, 1454, + 1450, 1454, 1452, 1457, 1458, 1459, 1458, 1460, 1459, 1459, 1460, 1461, + 1460, 1462, 1461, 1461, 1462, 1463, 1462, 1464, 1463, 1463, 1464, 1465, + 1464, 1466, 1465, 1465, 1466, 1467, 1466, 1468, 1467, 1467, 1468, 1469, + 1468, 1470, 1469, 1469, 1470, 1471, 1470, 1472, 1471, 1471, 1472, 1473, + 1472, 1474, 1473, 1473, 1474, 1475, 1474, 1476, 1475, 1475, 1476, 1477, + 1476, 1478, 1477, 1477, 1478, 1479, 1478, 1480, 1479, 1479, 1480, 1481, + 1480, 1482, 1481, 1481, 1482, 1483, 1482, 1484, 1483, 1483, 1484, 1485, + 1484, 1486, 1485, 1485, 1486, 1487, 1486, 1488, 1487, 1487, 1488, 1489, + 1488, 1490, 1489, 1489, 1490, 1491, 1490, 1376, 1491, 1491, 1376, 1492, + 1376, 1374, 1492, 1492, 1374, 1493, 1374, 1494, 1493, 1493, 1494, 1495, + 1494, 1496, 1495, 1495, 1496, 1497, 1496, 1370, 1497, 1497, 1370, 1498, + 1370, 1368, 1498, 1498, 1368, 1499, 1368, 1366, 1499, 1499, 1366, 1500, + 1366, 1501, 1500, 1500, 1501, 1502, 1501, 1503, 1502, 1502, 1503, 1457, + 1503, 1458, 1457, 1457, 1457, 1459, 1457, 1459, 1459, 1459, 1459, 1461, + 1459, 1461, 1461, 1461, 1461, 1463, 1461, 1463, 1463, 1463, 1463, 1465, + 1463, 1465, 1465, 1465, 1465, 1467, 1465, 1467, 1467, 1467, 1467, 1469, + 1467, 1469, 1469, 1469, 1469, 1471, 1469, 1471, 1471, 1471, 1471, 1473, + 1471, 1473, 1473, 1473, 1473, 1475, 1473, 1475, 1475, 1475, 1475, 1477, + 1475, 1477, 1477, 1477, 1477, 1479, 1477, 1479, 1479, 1479, 1479, 1481, + 1479, 1481, 1481, 1481, 1481, 1483, 1481, 1483, 1483, 1483, 1483, 1485, + 1483, 1485, 1485, 1485, 1485, 1487, 1485, 1487, 1487, 1487, 1487, 1489, + 1487, 1489, 1489, 1489, 1489, 1491, 1489, 1491, 1491, 1491, 1491, 1492, + 1491, 1492, 1492, 1492, 1492, 1493, 1492, 1493, 1493, 1493, 1493, 1495, + 1493, 1495, 1495, 1495, 1495, 1497, 1495, 1497, 1497, 1497, 1497, 1498, + 1497, 1498, 1498, 1498, 1498, 1499, 1498, 1499, 1499, 1499, 1499, 1500, + 1499, 1500, 1500, 1500, 1500, 1502, 1500, 1502, 1502, 1502, 1502, 1457, + 1502, 1457, 1457, 1504, 1360, 1505, 1360, 1358, 1505, 1505, 1358, 1506, + 1358, 1356, 1506, 1506, 1356, 1507, 1356, 1354, 1507, 1507, 1354, 1508, + 1354, 1509, 1508, 1508, 1509, 1510, 1509, 1442, 1510, 1510, 1442, 1511, + 1442, 1440, 1511, 1511, 1440, 1512, 1440, 1438, 1512, 1512, 1438, 1513, + 1438, 1436, 1513, 1513, 1436, 1514, 1436, 1434, 1514, 1514, 1434, 1515, + 1434, 1432, 1515, 1515, 1432, 1516, 1432, 1430, 1516, 1516, 1430, 1517, + 1430, 1428, 1517, 1517, 1428, 1518, 1428, 1426, 1518, 1518, 1426, 1519, + 1426, 1424, 1519, 1519, 1424, 1520, 1424, 1422, 1520, 1520, 1422, 1521, + 1422, 1420, 1521, 1521, 1420, 1522, 1420, 1418, 1522, 1522, 1418, 1523, + 1418, 1416, 1523, 1523, 1416, 1524, 1416, 1448, 1524, 1524, 1448, 1525, + 1448, 1526, 1525, 1525, 1526, 1527, 1526, 1528, 1527, 1527, 1528, 1529, + 1528, 1530, 1529, 1529, 1530, 1504, 1530, 1360, 1504, 1504, 1504, 1505, + 1504, 1505, 1505, 1505, 1505, 1506, 1505, 1506, 1506, 1506, 1506, 1507, + 1506, 1507, 1507, 1507, 1507, 1508, 1507, 1508, 1508, 1508, 1508, 1510, + 1508, 1510, 1510, 1510, 1510, 1511, 1510, 1511, 1511, 1511, 1511, 1512, + 1511, 1512, 1512, 1512, 1512, 1513, 1512, 1513, 1513, 1513, 1513, 1514, + 1513, 1514, 1514, 1514, 1514, 1515, 1514, 1515, 1515, 1515, 1515, 1516, + 1515, 1516, 1516, 1516, 1516, 1517, 1516, 1517, 1517, 1517, 1517, 1518, + 1517, 1518, 1518, 1518, 1518, 1519, 1518, 1519, 1519, 1519, 1519, 1520, + 1519, 1520, 1520, 1520, 1520, 1521, 1520, 1521, 1521, 1521, 1521, 1522, + 1521, 1522, 1522, 1522, 1522, 1523, 1522, 1523, 1523, 1523, 1523, 1524, + 1523, 1524, 1524, 1524, 1524, 1525, 1524, 1525, 1525, 1525, 1525, 1527, + 1525, 1527, 1527, 1527, 1527, 1529, 1527, 1529, 1529, 1529, 1529, 1504, + 1529, 1504, 1504 + ] + }, + { + "id": "shape1_part6", + "type": "TRIANGLES", + "indices": [ + 2195, 2196, 2197, 2196, 2198, 2197, 2197, 2198, 2199, 2198, 2200, 2199, + 2199, 2200, 2201, 2200, 2202, 2201, 2201, 2202, 1591, 2202, 1592, 1591, + 1591, 1592, 1589, 1592, 1590, 1589, 1589, 1590, 1587, 1590, 1588, 1587, + 1587, 1588, 1585, 1588, 1586, 1585, 1585, 1586, 2203, 1586, 2204, 2203, + 2203, 2204, 2195, 2204, 2196, 2195, 2195, 2195, 2197, 2195, 2197, 2197, + 2197, 2197, 2199, 2197, 2199, 2199, 2199, 2199, 2201, 2199, 2201, 2201, + 2201, 2201, 1591, 2201, 1591, 1591, 1591, 1591, 1589, 1591, 1589, 1589, + 1589, 1589, 1587, 1589, 1587, 1587, 1587, 1587, 1585, 1587, 1585, 1585, + 1585, 1585, 2203, 1585, 2203, 2203, 2203, 2203, 2195, 2203, 2195, 2195 + ] + }, + { + "id": "shape1_part7", + "type": "TRIANGLES", + "indices": [ + 1585, 2203, 2195, 1587, 1585, 2195, 1589, 1587, 2195, 2201, 1589, 2195, + 2197, 2201, 2195, 2199, 2201, 2197, 1591, 1589, 2201 + ] + }, + { + "id": "shape1_part8", + "type": "TRIANGLES", + "indices": [ + 2388, 2389, 2390, 2389, 2391, 2390, 2390, 2391, 2392, 2391, 2393, 2392, + 2392, 2393, 2394, 2393, 2395, 2394, 2394, 2395, 2396, 2395, 2397, 2396, + 2396, 2397, 2398, 2397, 2399, 2398, 2398, 2399, 2400, 2399, 2401, 2400, + 2400, 2401, 2388, 2401, 2389, 2388, 2402, 2388, 2403, 2388, 2390, 2403, + 2403, 2390, 2404, 2390, 2392, 2404, 2404, 2392, 2394, 2392, 2394, 2394, + 2394, 2394, 2405, 2394, 2396, 2405, 2405, 2396, 2406, 2396, 2398, 2406, + 2406, 2398, 2407, 2398, 2400, 2407, 2407, 2400, 2402, 2400, 2388, 2402, + 2395, 2393, 2389, 2399, 2395, 2389, 2401, 2399, 2389, 2408, 2409, 2394, + 2409, 2395, 2394, 2394, 2395, 2392, 2395, 2393, 2392, 2392, 2393, 2388, + 2393, 2389, 2388, 2388, 2389, 2400, 2389, 2401, 2400, 2400, 2401, 2410, + 2401, 2411, 2410, 2410, 2411, 2412, 2411, 2413, 2412, 2412, 2413, 2414, + 2413, 2415, 2414, 2414, 2415, 2416, 2415, 2417, 2416, 2416, 2417, 2418, + 2417, 2419, 2418, 2418, 2419, 2420, 2419, 2421, 2420, 2420, 2421, 2422, + 2421, 2423, 2422, 2422, 2423, 2424, 2423, 2425, 2424, 2424, 2425, 2426, + 2425, 2427, 2426, 2426, 2427, 2428, 2427, 2429, 2428, 2428, 2429, 2430, + 2429, 2431, 2430, 2430, 2431, 2432, 2431, 2433, 2432, 2432, 2433, 2434, + 2433, 2435, 2434, 2434, 2435, 2436, 2435, 2437, 2436, 2436, 2437, 2438, + 2437, 2439, 2438, 2438, 2439, 2440, 2439, 2441, 2440, 2440, 2441, 2442, + 2441, 2443, 2442, 2442, 2443, 2444, 2443, 2445, 2444, 2444, 2445, 2446, + 2445, 2447, 2446, 2446, 2447, 2448, 2447, 2449, 2448, 2448, 2449, 2450, + 2449, 2451, 2450, 2450, 2451, 2452, 2451, 2453, 2452, 2452, 2453, 2454, + 2453, 2455, 2454, 2454, 2455, 2456, 2455, 2457, 2456, 2456, 2457, 2458, + 2457, 2459, 2458, 2458, 2459, 2460, 2459, 2461, 2460, 2460, 2461, 2462, + 2461, 2463, 2462, 2462, 2463, 2464, 2463, 2465, 2464, 2464, 2465, 2466, + 2465, 2467, 2466, 2466, 2467, 2468, 2467, 2469, 2468, 2468, 2469, 2470, + 2469, 2471, 2470, 2470, 2471, 2472, 2471, 2473, 2472, 2472, 2473, 2474, + 2473, 2475, 2474, 2474, 2475, 2476, 2475, 2477, 2476, 2476, 2477, 2478, + 2477, 2479, 2478, 2478, 2479, 2480, 2479, 2481, 2480, 2480, 2481, 2482, + 2481, 2483, 2482, 2482, 2483, 2484, 2483, 2485, 2484, 2484, 2485, 2486, + 2485, 2487, 2486, 2486, 2487, 2488, 2487, 2489, 2488, 2488, 2489, 2490, + 2489, 2491, 2490, 2490, 2491, 2492, 2491, 2493, 2492, 2492, 2493, 2494, + 2493, 2495, 2494, 2494, 2495, 2496, 2495, 2497, 2496, 2496, 2497, 2498, + 2497, 2499, 2498, 2498, 2499, 2500, 2499, 2501, 2500, 2500, 2501, 2408, + 2501, 2409, 2408, 2408, 2408, 2394, 2408, 2394, 2394, 2394, 2394, 2392, + 2394, 2392, 2392, 2392, 2392, 2388, 2392, 2388, 2388, 2388, 2388, 2400, + 2388, 2400, 2400, 2400, 2400, 2410, 2400, 2410, 2410, 2410, 2410, 2412, + 2410, 2412, 2412, 2412, 2412, 2414, 2412, 2414, 2414, 2414, 2414, 2416, + 2414, 2416, 2416, 2416, 2416, 2418, 2416, 2418, 2418, 2418, 2418, 2420, + 2418, 2420, 2420, 2420, 2420, 2422, 2420, 2422, 2422, 2422, 2422, 2424, + 2422, 2424, 2424, 2424, 2424, 2426, 2424, 2426, 2426, 2426, 2426, 2428, + 2426, 2428, 2428, 2428, 2428, 2430, 2428, 2430, 2430, 2430, 2430, 2432, + 2430, 2432, 2432, 2432, 2432, 2434, 2432, 2434, 2434, 2434, 2434, 2436, + 2434, 2436, 2436, 2436, 2436, 2438, 2436, 2438, 2438, 2438, 2438, 2440, + 2438, 2440, 2440, 2440, 2440, 2442, 2440, 2442, 2442, 2442, 2442, 2444, + 2442, 2444, 2444, 2444, 2444, 2446, 2444, 2446, 2446, 2446, 2446, 2448, + 2446, 2448, 2448, 2448, 2448, 2450, 2448, 2450, 2450, 2450, 2450, 2452, + 2450, 2452, 2452, 2452, 2452, 2454, 2452, 2454, 2454, 2454, 2454, 2456, + 2454, 2456, 2456, 2456, 2456, 2458, 2456, 2458, 2458, 2458, 2458, 2460, + 2458, 2460, 2460, 2460, 2460, 2462, 2460, 2462, 2462, 2462, 2462, 2464, + 2462, 2464, 2464, 2464, 2464, 2466, 2464, 2466, 2466, 2466, 2466, 2468, + 2466, 2468, 2468, 2468, 2468, 2470, 2468, 2470, 2470, 2470, 2470, 2472, + 2470, 2472, 2472, 2472, 2472, 2474, 2472, 2474, 2474, 2474, 2474, 2476, + 2474, 2476, 2476, 2476, 2476, 2478, 2476, 2478, 2478, 2478, 2478, 2480, + 2478, 2480, 2480, 2480, 2480, 2482, 2480, 2482, 2482, 2482, 2482, 2484, + 2482, 2484, 2484, 2484, 2484, 2486, 2484, 2486, 2486, 2486, 2486, 2488, + 2486, 2488, 2488, 2488, 2488, 2490, 2488, 2490, 2490, 2490, 2490, 2492, + 2490, 2492, 2492, 2492, 2492, 2494, 2492, 2494, 2494, 2494, 2494, 2496, + 2494, 2496, 2496, 2496, 2496, 2498, 2496, 2498, 2498, 2498, 2498, 2500, + 2498, 2500, 2500, 2500, 2500, 2408, 2500, 2408, 2408, 2501, 2499, 2497, + 2497, 2495, 2493, 2493, 2491, 2489, 2489, 2487, 2485, 2485, 2483, 2481, + 2485, 2481, 2479, 2479, 2477, 2475, 2475, 2473, 2471, 2475, 2471, 2469, + 2479, 2475, 2469, 2485, 2479, 2469, 2489, 2485, 2469, 2467, 2465, 2463, + 2463, 2461, 2459, 2467, 2463, 2459, 2459, 2457, 2455, 2467, 2459, 2455, + 2467, 2455, 2453, 2467, 2453, 2451, 2467, 2451, 2449, 2469, 2467, 2449, + 2489, 2469, 2449, 2493, 2489, 2449, 2497, 2493, 2449, 2501, 2497, 2449, + 2409, 2501, 2449, 2449, 2447, 2445, 2449, 2445, 2443, 2449, 2443, 2441, + 2449, 2441, 2439, 2449, 2439, 2437, 2449, 2437, 2435, 2435, 2433, 2431, + 2449, 2435, 2431, 2449, 2431, 2429, 2449, 2429, 2427, 2449, 2427, 2425, + 2423, 2421, 2419, 2425, 2423, 2419, 2425, 2419, 2417, 2425, 2417, 2415, + 2425, 2415, 2413, 2425, 2413, 2411, 2425, 2411, 2401, 2425, 2401, 2389, + 2449, 2425, 2389, 2449, 2389, 2393, 2409, 2449, 2393, 2409, 2393, 2395 + ] + }, + { + "id": "shape1_part9", + "type": "TRIANGLES", + "indices": [ + 2406, 2407, 2402, 2403, 2406, 2402, 2405, 2406, 2403, 2405, 2403, 2404, + 2394, 2405, 2404, 2448, 2442, 2444, 2448, 2444, 2446, 2448, 2440, 2442, + 2448, 2468, 2440, 2466, 2468, 2448, 2466, 2448, 2450, 2470, 2440, 2468, + 2472, 2440, 2470, 2474, 2438, 2440, 2472, 2474, 2440, 2464, 2466, 2450, + 2476, 2438, 2474, 2478, 2436, 2438, 2476, 2478, 2438, 2458, 2462, 2450, + 2464, 2450, 2462, 2480, 2436, 2478, 2450, 2452, 2458, 2460, 2462, 2458, + 2482, 2436, 2480, 2454, 2458, 2452, 2484, 2436, 2482, 2434, 2436, 2484, + 2430, 2432, 2434, 2486, 2434, 2484, 2456, 2458, 2454, 2488, 2434, 2486, + 2388, 2428, 2430, 2490, 2434, 2488, 2492, 2430, 2434, 2490, 2492, 2434, + 2392, 2388, 2430, 2492, 2392, 2430, 2494, 2392, 2492, 2496, 2392, 2494, + 2388, 2426, 2428, 2424, 2426, 2388, 2424, 2388, 2422, 2422, 2388, 2420, + 2400, 2410, 2412, 2400, 2412, 2414, 2400, 2414, 2416, 2498, 2394, 2392, + 2400, 2416, 2418, 2400, 2418, 2388, 2388, 2418, 2420, 2498, 2392, 2496, + 2500, 2394, 2498, 2408, 2394, 2500 + ] + }, + { + "id": "shape2_part1", + "type": "TRIANGLES", + "indices": [ + 2502, 2503, 2504, 2503, 2505, 2504, 2504, 2505, 2506, 2505, 2507, 2506, + 2506, 2507, 2508, 2507, 2509, 2508, 2507, 2505, 2509, 2505, 2503, 2509, + 2509, 2503, 2508, 2503, 2502, 2508, 2508, 2502, 2506, 2502, 2504, 2506, + 2510, 2511, 2512, 2511, 2513, 2512, 2512, 2513, 2514, 2513, 2515, 2514, + 2514, 2515, 2516, 2515, 2517, 2516, 2515, 2513, 2517, 2513, 2511, 2517, + 2517, 2511, 2516, 2511, 2510, 2516, 2516, 2510, 2514, 2510, 2512, 2514, + 2518, 2519, 2520, 2519, 2521, 2520, 2520, 2521, 2522, 2521, 2523, 2522, + 2522, 2523, 2524, 2523, 2525, 2524, 2523, 2521, 2525, 2521, 2519, 2525, + 2525, 2519, 2524, 2519, 2518, 2524, 2524, 2518, 2522, 2518, 2520, 2522, + 2526, 2527, 2528, 2527, 2529, 2528, 2528, 2529, 2530, 2529, 2531, 2530, + 2530, 2531, 2532, 2531, 2533, 2532, 2531, 2529, 2533, 2529, 2527, 2533, + 2533, 2527, 2532, 2527, 2526, 2532, 2532, 2526, 2530, 2526, 2528, 2530, + 2534, 2535, 2536, 2535, 2537, 2536, 2536, 2537, 2538, 2537, 2539, 2538, + 2538, 2539, 2540, 2539, 2541, 2540, 2539, 2537, 2541, 2537, 2535, 2541, + 2541, 2535, 2540, 2535, 2534, 2540, 2540, 2534, 2538, 2534, 2536, 2538, + 2542, 2543, 2544, 2543, 2545, 2544, 2544, 2545, 2546, 2545, 2547, 2546, + 2546, 2547, 2548, 2547, 2549, 2548, 2547, 2545, 2549, 2545, 2543, 2549, + 2549, 2543, 2548, 2543, 2542, 2548, 2548, 2542, 2546, 2542, 2544, 2546, + 2550, 2551, 2552, 2551, 2553, 2552, 2552, 2553, 2554, 2553, 2555, 2554, + 2554, 2555, 2556, 2555, 2557, 2556, 2555, 2553, 2557, 2553, 2551, 2557, + 2557, 2551, 2556, 2551, 2550, 2556, 2556, 2550, 2554, 2550, 2552, 2554, + 2558, 2559, 2560, 2559, 2561, 2560, 2560, 2561, 2562, 2561, 2563, 2562, + 2562, 2563, 2564, 2563, 2565, 2564, 2563, 2561, 2565, 2561, 2559, 2565, + 2565, 2559, 2564, 2559, 2558, 2564, 2564, 2558, 2562, 2558, 2560, 2562, + 2566, 2567, 2568, 2567, 2569, 2568, 2568, 2569, 2570, 2569, 2571, 2570, + 2570, 2571, 2572, 2571, 2573, 2572, 2571, 2569, 2573, 2569, 2567, 2573, + 2573, 2567, 2572, 2567, 2566, 2572, 2572, 2566, 2570, 2566, 2568, 2570, + 2574, 2575, 2576, 2575, 2577, 2576, 2576, 2577, 2578, 2577, 2579, 2578, + 2578, 2579, 2580, 2579, 2581, 2580, 2579, 2577, 2581, 2577, 2575, 2581, + 2581, 2575, 2580, 2575, 2574, 2580, 2580, 2574, 2578, 2574, 2576, 2578, + 2582, 2583, 2584, 2583, 2585, 2584, 2584, 2585, 2586, 2585, 2587, 2586, + 2586, 2587, 2588, 2587, 2589, 2588, 2587, 2585, 2589, 2585, 2583, 2589, + 2589, 2583, 2588, 2583, 2582, 2588, 2588, 2582, 2586, 2582, 2584, 2586, + 2590, 2591, 2592, 2591, 2593, 2592, 2592, 2593, 2594, 2593, 2595, 2594, + 2594, 2595, 2596, 2595, 2597, 2596, 2595, 2593, 2597, 2593, 2591, 2597, + 2597, 2591, 2596, 2591, 2590, 2596, 2596, 2590, 2594, 2590, 2592, 2594 + ] + } + ] + } + ], + "materials": [ + { + "id": "ENTRANCE_DEFAULT_0", + "ambient": [ 0.101961, 0.000000, 0.000000], + "diffuse": [ 0.101961, 0.000000, 0.000000], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "BUILDING_DEFAULT_0", + "ambient": [ 0.501961, 0.450980, 0.274510], + "diffuse": [ 0.501961, 0.450980, 0.274510], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "ROOF_DEFAULT_0", + "ambient": [ 0.400000, 0.000000, 0.000000], + "diffuse": [ 0.400000, 0.000000, 0.000000], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_0_0", + "ambient": [ 0.196078, 0.196078, 0.196078], + "diffuse": [ 0.196078, 0.196078, 0.196078], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_1_0", + "ambient": [ 0.235294, 0.215686, 0.215686], + "diffuse": [ 0.235294, 0.215686, 0.215686], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_2_0", + "ambient": [ 0.470588, 0.470588, 0.470588], + "diffuse": [ 0.470588, 0.470588, 0.470588], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_3_0", + "ambient": [ 0.333333, 0.254902, 0.156863], + "diffuse": [ 0.333333, 0.254902, 0.156863], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "MAT_4_0", + "ambient": [ 0.149020, 0.149020, 0.149020], + "diffuse": [ 0.149020, 0.149020, 0.149020], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "GLASS_0", + "ambient": [ 0.450980, 0.450980, 0.450980], + "diffuse": [ 0.450980, 0.450980, 0.450980], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + }, + { + "id": "GLASS_ROOF_0", + "ambient": [ 0.450980, 0.450980, 0.450980], + "diffuse": [ 0.450980, 0.450980, 0.450980], + "specular": [ 0.200000, 0.200000, 0.200000], + "shininess": 20.000000 + } + ], + "nodes": [ + { + "id": "test_root", + "children": [ + { + "id": "Building", + "parts": [ + { + "meshpartid": "shape1_part1", + "materialid": "BUILDING_DEFAULT_0" + }, + { + "meshpartid": "shape1_part2", + "materialid": "ROOF_DEFAULT_0" + }, + { + "meshpartid": "shape1_part3", + "materialid": "MAT_0_0" + }, + { + "meshpartid": "shape1_part4", + "materialid": "MAT_1_0" + }, + { + "meshpartid": "shape1_part5", + "materialid": "MAT_2_0" + }, + { + "meshpartid": "shape1_part6", + "materialid": "MAT_3_0" + }, + { + "meshpartid": "shape1_part7", + "materialid": "MAT_4_0" + }, + { + "meshpartid": "shape1_part8", + "materialid": "GLASS_0" + }, + { + "meshpartid": "shape1_part9", + "materialid": "GLASS_ROOF_0" + } + ] + }, + { + "id": "BuildingEntrance", + "parts": [ + { + "meshpartid": "shape2_part1", + "materialid": "ENTRANCE_DEFAULT_0" + } + ] + } + ] + } + ], + "animations": [] } \ No newline at end of file diff --git a/vtm-playground/data/g3d/treeA.g3dj b/vtm-playground/data/g3d/treeA.g3dj index 3c084d3c..19efbbc5 100644 --- a/vtm-playground/data/g3d/treeA.g3dj +++ b/vtm-playground/data/g3d/treeA.g3dj @@ -1,177 +1,177 @@ -{ - "version": [ 0, 1], - "id": "", - "meshes": [ - { - "attributes": ["POSITION", "NORMAL", "TEXCOORD0"], - "vertices": [ - -0.003717, -0.043092, 0.000001, 0.000000, -1.000000, 0.000000, 0.000000, 0.000000, - -0.003717, -0.043092, -0.019798, 0.000000, -0.609973, -0.792383, 0.000000, 0.000000, - 0.013430, -0.043092, -0.009898, 0.686239, -0.609973, -0.396191, 0.000000, 0.000000, - -0.003717, 0.527242, 0.000001, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.013430, 0.527242, -0.009898, 0.686239, 0.609973, -0.396191, 0.000000, 0.000000, - -0.003717, 0.527242, -0.019798, 0.000000, 0.609973, -0.792383, 0.000000, 0.000000, - 0.013430, -0.043092, 0.009901, 0.686239, -0.609973, 0.396191, 0.000000, 0.000000, - 0.013430, 0.527242, 0.009901, 0.686239, 0.609973, 0.396191, 0.000000, 0.000000, - -0.003717, -0.043092, 0.019801, 0.000000, -0.609973, 0.792383, 0.000000, 0.000000, - -0.003717, 0.527242, 0.019801, 0.000000, 0.609973, 0.792383, 0.000000, 0.000000, - -0.020865, -0.043092, 0.009901, -0.686239, -0.609973, 0.396191, 0.000000, 0.000000, - -0.020865, 0.527242, 0.009901, -0.686239, 0.609973, 0.396191, 0.000000, 0.000000, - -0.020865, -0.043092, -0.009898, -0.686239, -0.609973, -0.396191, 0.000000, 0.000000, - -0.020865, 0.527242, -0.009898, -0.686239, 0.609973, -0.396191, 0.000000, 0.000000, - -0.000052, 1.708732, 0.000001, 0.000000, 1.000000, 0.000000, 0.627643, 0.963260, - -0.056858, 1.692897, -0.056805, -0.359325, 0.861232, -0.359325, 0.811107, 0.943917, - -0.080388, 1.692897, 0.000001, -0.508194, 0.861232, 0.000000, 0.930977, 0.971962, - -0.112293, 1.619116, -0.112239, -0.584552, 0.562639, -0.584552, 0.871491, 0.884983, - -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 1.012361, 0.910828, - -0.176420, 1.422079, -0.176367, -0.675863, 0.293832, -0.675863, 0.903795, 0.728324, - -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 1.035246, 0.751852, - -0.210746, 1.159339, -0.210693, -0.704306, 0.088870, -0.704306, 0.922129, 0.451029, - -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 1.045340, 0.473093, - -0.210605, 0.903175, -0.210552, -0.705252, -0.072024, -0.705252, 0.936767, 0.254108, - -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 1.052424, 0.274946, - -0.180964, 0.617981, -0.180911, -0.685263, -0.246529, -0.685263, 0.956801, 0.142573, - -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 1.061122, 0.161660, - -0.116291, 0.378825, -0.116238, -0.610279, -0.505051, -0.610279, 0.991689, 0.079506, - -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 1.074527, 0.095355, - -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 1.038003, 0.052079, - -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 1.090933, 0.063214, - -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 0.090933, 0.063214, - -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 0.038003, 0.052079, - -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 0.127500, 0.036749, - -0.000051, 0.290116, -0.083580, 0.000000, -0.817194, -0.576312, 0.994047, 0.033372, - -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 1.127500, 0.036749, - -0.000051, 0.378825, -0.164386, 0.000000, -0.505051, -0.863063, 0.893772, 0.053663, - -0.000052, 0.617981, -0.255847, 0.000000, -0.246529, -0.969115, 0.836458, 0.114704, - -0.000052, 0.903175, -0.297766, 0.000000, -0.072024, -0.997375, 0.812221, 0.226047, - -0.000052, 1.159339, -0.297966, 0.000000, 0.088870, -0.996033, 0.797565, 0.423137, - -0.000052, 1.422079, -0.249421, 0.000000, 0.293832, -0.955840, 0.781975, 0.700922, - -0.000052, 1.619116, -0.158731, 0.000000, 0.562639, -0.826655, 0.759783, 0.858997, - -0.000052, 1.692897, -0.080335, 0.000000, 0.861232, -0.508194, 0.728165, 0.921879, - 0.056754, 1.692897, -0.056805, 0.359325, 0.861232, -0.359325, 0.652361, 0.910987, - 0.112189, 1.619116, -0.112239, 0.584552, 0.562639, -0.584552, 0.659906, 0.845090, - 0.176316, 1.422079, -0.176367, 0.675863, 0.293832, -0.675863, 0.665734, 0.684958, - 0.210643, 1.159339, -0.210693, 0.704306, 0.088870, -0.704306, 0.670277, 0.405750, - 0.210502, 0.903175, -0.210552, 0.705252, -0.072024, -0.705252, 0.675032, 0.207335, - 0.180860, 0.617981, -0.180910, 0.685263, -0.246529, -0.685263, 0.684415, 0.093825, - 0.116188, 0.378825, -0.116237, 0.610279, -0.505051, -0.610279, 0.723612, 0.027920, - 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 1.018456, 0.011649, - 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 0.018456, 0.011649, - 0.083530, 0.290116, 0.000002, 0.576159, -0.817316, 0.000000, 0.267608, 0.018648, - 0.164335, 0.378825, 0.000002, 0.863063, -0.505051, 0.000000, 0.457225, 0.035136, - 0.255796, 0.617981, 0.000002, 0.969115, -0.246529, 0.000000, 0.515690, 0.098717, - 0.297716, 0.903175, 0.000002, 0.997375, -0.072024, 0.000000, 0.532803, 0.211513, - 0.297915, 1.159339, 0.000002, 0.996033, 0.088870, 0.000000, 0.541872, 0.409545, - 0.249370, 1.422079, 0.000002, 0.955840, 0.293832, 0.000000, 0.550746, 0.688375, - 0.158680, 1.619116, 0.000002, 0.826655, 0.562639, 0.000000, 0.562378, 0.848006, - 0.080284, 1.692897, 0.000001, 0.508194, 0.861232, 0.000000, 0.577714, 0.913236, - 0.056754, 1.692897, 0.056808, 0.359325, 0.861232, 0.359325, 0.500528, 0.928224, - 0.112188, 1.619116, 0.112242, 0.584552, 0.562670, 0.584552, 0.459880, 0.866817, - 0.176316, 1.422079, 0.176370, 0.675863, 0.293832, 0.675863, 0.433163, 0.709519, - 0.210642, 1.159339, 0.210696, 0.704306, 0.088870, 0.704306, 0.415507, 0.432148, - 0.210501, 0.903175, 0.210555, 0.705252, -0.072024, 0.705252, 0.399773, 0.235351, - 0.180860, 0.617981, 0.180914, 0.685263, -0.246529, 0.685263, 0.375517, 0.124299, - 0.116187, 0.378825, 0.116241, 0.610279, -0.505051, 0.610279, 0.325269, 0.063109, - 0.059049, 0.290116, 0.059103, 0.407361, -0.817347, 0.407392, 0.248452, 0.040330, - -0.000053, 0.290116, 0.083583, 0.000000, -0.817316, 0.576159, 0.199939, 0.056802, - -0.000053, 0.378825, 0.164389, 0.000000, -0.505051, 0.863063, 0.234895, 0.086200, - -0.000053, 0.617981, 0.255850, 0.000000, -0.246529, 0.969115, 0.262269, 0.150492, - -0.000052, 0.903175, 0.297769, 0.000000, -0.072024, 0.997375, 0.278892, 0.262611, - -0.000052, 1.159339, 0.297968, 0.000000, 0.088870, 0.996033, 0.291619, 0.459894, - -0.000052, 1.422079, 0.249424, 0.000000, 0.293832, 0.955840, 0.308400, 0.737559, - -0.000052, 1.619116, 0.158734, 0.000000, 0.562670, 0.826655, 0.340691, 0.894603, - -0.000052, 1.692897, 0.080338, 0.000000, 0.861232, 0.508194, 0.411564, 0.953109, - -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 0.247502, 0.980115, - -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 0.186319, 0.915857, - -0.176420, 1.422079, 0.176369, -0.675863, 0.293832, 0.675863, 0.173739, 0.755927, - -0.210747, 1.159339, 0.210696, -0.704306, 0.088870, 0.704306, 0.168491, 0.476740, - -0.210606, 0.903175, 0.210555, -0.705252, -0.072024, 0.705252, 0.164886, 0.278291, - -0.180964, 0.617981, 0.180913, -0.685263, -0.246529, 0.685263, 0.160531, 0.164632, - -0.116292, 0.378825, 0.116240, -0.610279, -0.505051, 0.610279, 0.153922, 0.097744, - -0.059154, 0.290116, 0.059102, -0.407453, -0.817255, 0.407483, 0.145909, 0.064880, - -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 0.074527, 0.095355, - -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 0.061122, 0.161660, - -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 0.052424, 0.274946, - -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 0.045340, 0.473093, - -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 0.035246, 0.751852, - -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 0.012361, 0.910828, - -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 1.247502, 0.980115, - -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 1.186319, 0.915857 - ], - "parts": [ - { - "id": "mpart1", - "type": "TRIANGLES", - "indices": [ - 0, 1, 2, 3, 4, 5, 0, 2, 6, 3, 7, 4, - 0, 6, 8, 3, 9, 7, 0, 8, 10, 3, 11, 9, - 0, 10, 12, 3, 13, 11, 12, 1, 0, 3, 5, 13, - 1, 5, 4, 1, 4, 2, 2, 4, 7, 2, 7, 6, - 6, 7, 9, 6, 9, 8, 8, 9, 11, 8, 11, 10, - 10, 11, 13, 10, 13, 12, 5, 1, 12, 5, 12, 13, - 14, 15, 16, 16, 15, 17, 16, 17, 18, 18, 17, 19, - 18, 19, 20, 20, 19, 21, 20, 21, 22, 22, 21, 23, - 22, 23, 24, 24, 23, 25, 24, 25, 26, 26, 25, 27, - 26, 27, 28, 28, 27, 29, 28, 29, 30, 31, 32, 33, - 29, 34, 35, 27, 36, 34, 27, 34, 29, 25, 37, 36, - 25, 36, 27, 23, 38, 37, 23, 37, 25, 21, 39, 38, - 21, 38, 23, 19, 40, 39, 19, 39, 21, 17, 41, 40, - 17, 40, 19, 15, 42, 41, 15, 41, 17, 15, 14, 42, - 42, 14, 43, 42, 43, 44, 42, 44, 41, 41, 44, 45, - 41, 45, 40, 40, 45, 46, 40, 46, 39, 39, 46, 47, - 39, 47, 38, 38, 47, 48, 38, 48, 37, 37, 48, 49, - 37, 49, 36, 36, 49, 50, 36, 50, 34, 34, 50, 35, - 51, 52, 33, 49, 53, 52, 49, 52, 50, 48, 54, 53, - 48, 53, 49, 47, 55, 54, 47, 54, 48, 46, 56, 55, - 46, 55, 47, 45, 57, 56, 45, 56, 46, 44, 58, 57, - 44, 57, 45, 43, 59, 58, 43, 58, 44, 43, 14, 59, - 59, 14, 60, 59, 60, 61, 59, 61, 58, 58, 61, 62, - 58, 62, 57, 57, 62, 63, 57, 63, 56, 56, 63, 64, - 56, 64, 55, 55, 64, 65, 55, 65, 54, 54, 65, 66, - 54, 66, 53, 53, 66, 67, 53, 67, 52, 52, 67, 33, - 67, 68, 33, 66, 69, 68, 66, 68, 67, 65, 70, 69, - 65, 69, 66, 64, 71, 70, 64, 70, 65, 63, 72, 71, - 63, 71, 64, 62, 73, 72, 62, 72, 63, 61, 74, 73, - 61, 73, 62, 60, 75, 74, 60, 74, 61, 60, 14, 75, - 75, 14, 76, 75, 76, 77, 75, 77, 74, 74, 77, 78, - 74, 78, 73, 73, 78, 79, 73, 79, 72, 72, 79, 80, - 72, 80, 71, 71, 80, 81, 71, 81, 70, 70, 81, 82, - 70, 82, 69, 69, 82, 83, 69, 83, 68, 68, 83, 33, - 83, 31, 33, 82, 84, 31, 82, 31, 83, 81, 85, 84, - 81, 84, 82, 80, 86, 85, 80, 85, 81, 79, 87, 86, - 79, 86, 80, 78, 88, 87, 78, 87, 79, 77, 89, 88, - 77, 88, 78, 90, 16, 18, 90, 18, 91, 90, 14, 16 - - ] - } - ] - } - ], - "materials": [ - { - "id": "_tree.png", - "diffuse": [ 0.900000, 0.900000, 0.900000], - "specular": [ 0.100000, 0.100000, 0.100000], - "textures": [ - { - "id": "_tree.png", - "filename": "tree.png", - "type": "DIFFUSE" - } - ] - } - ], - "nodes": [ - { - "id": "treeA_root", - "parts": [ - { - "meshpartid": "mpart1", - "materialid": "_tree.png", - "uvMapping": [[ 0]] - } - ] - } - ], - "animations": [] +{ + "version": [ 0, 1], + "id": "", + "meshes": [ + { + "attributes": ["POSITION", "NORMAL", "TEXCOORD0"], + "vertices": [ + -0.003717, -0.043092, 0.000001, 0.000000, -1.000000, 0.000000, 0.000000, 0.000000, + -0.003717, -0.043092, -0.019798, 0.000000, -0.609973, -0.792383, 0.000000, 0.000000, + 0.013430, -0.043092, -0.009898, 0.686239, -0.609973, -0.396191, 0.000000, 0.000000, + -0.003717, 0.527242, 0.000001, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, + 0.013430, 0.527242, -0.009898, 0.686239, 0.609973, -0.396191, 0.000000, 0.000000, + -0.003717, 0.527242, -0.019798, 0.000000, 0.609973, -0.792383, 0.000000, 0.000000, + 0.013430, -0.043092, 0.009901, 0.686239, -0.609973, 0.396191, 0.000000, 0.000000, + 0.013430, 0.527242, 0.009901, 0.686239, 0.609973, 0.396191, 0.000000, 0.000000, + -0.003717, -0.043092, 0.019801, 0.000000, -0.609973, 0.792383, 0.000000, 0.000000, + -0.003717, 0.527242, 0.019801, 0.000000, 0.609973, 0.792383, 0.000000, 0.000000, + -0.020865, -0.043092, 0.009901, -0.686239, -0.609973, 0.396191, 0.000000, 0.000000, + -0.020865, 0.527242, 0.009901, -0.686239, 0.609973, 0.396191, 0.000000, 0.000000, + -0.020865, -0.043092, -0.009898, -0.686239, -0.609973, -0.396191, 0.000000, 0.000000, + -0.020865, 0.527242, -0.009898, -0.686239, 0.609973, -0.396191, 0.000000, 0.000000, + -0.000052, 1.708732, 0.000001, 0.000000, 1.000000, 0.000000, 0.627643, 0.963260, + -0.056858, 1.692897, -0.056805, -0.359325, 0.861232, -0.359325, 0.811107, 0.943917, + -0.080388, 1.692897, 0.000001, -0.508194, 0.861232, 0.000000, 0.930977, 0.971962, + -0.112293, 1.619116, -0.112239, -0.584552, 0.562639, -0.584552, 0.871491, 0.884983, + -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 1.012361, 0.910828, + -0.176420, 1.422079, -0.176367, -0.675863, 0.293832, -0.675863, 0.903795, 0.728324, + -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 1.035246, 0.751852, + -0.210746, 1.159339, -0.210693, -0.704306, 0.088870, -0.704306, 0.922129, 0.451029, + -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 1.045340, 0.473093, + -0.210605, 0.903175, -0.210552, -0.705252, -0.072024, -0.705252, 0.936767, 0.254108, + -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 1.052424, 0.274946, + -0.180964, 0.617981, -0.180911, -0.685263, -0.246529, -0.685263, 0.956801, 0.142573, + -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 1.061122, 0.161660, + -0.116291, 0.378825, -0.116238, -0.610279, -0.505051, -0.610279, 0.991689, 0.079506, + -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 1.074527, 0.095355, + -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 1.038003, 0.052079, + -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 1.090933, 0.063214, + -0.083634, 0.290116, 0.000001, -0.576312, -0.817194, 0.000000, 0.090933, 0.063214, + -0.059153, 0.290116, -0.059100, -0.407514, -0.817194, -0.407544, 0.038003, 0.052079, + -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 0.127500, 0.036749, + -0.000051, 0.290116, -0.083580, 0.000000, -0.817194, -0.576312, 0.994047, 0.033372, + -0.000125, 0.265210, -0.000071, -0.000244, -0.999969, -0.000244, 1.127500, 0.036749, + -0.000051, 0.378825, -0.164386, 0.000000, -0.505051, -0.863063, 0.893772, 0.053663, + -0.000052, 0.617981, -0.255847, 0.000000, -0.246529, -0.969115, 0.836458, 0.114704, + -0.000052, 0.903175, -0.297766, 0.000000, -0.072024, -0.997375, 0.812221, 0.226047, + -0.000052, 1.159339, -0.297966, 0.000000, 0.088870, -0.996033, 0.797565, 0.423137, + -0.000052, 1.422079, -0.249421, 0.000000, 0.293832, -0.955840, 0.781975, 0.700922, + -0.000052, 1.619116, -0.158731, 0.000000, 0.562639, -0.826655, 0.759783, 0.858997, + -0.000052, 1.692897, -0.080335, 0.000000, 0.861232, -0.508194, 0.728165, 0.921879, + 0.056754, 1.692897, -0.056805, 0.359325, 0.861232, -0.359325, 0.652361, 0.910987, + 0.112189, 1.619116, -0.112239, 0.584552, 0.562639, -0.584552, 0.659906, 0.845090, + 0.176316, 1.422079, -0.176367, 0.675863, 0.293832, -0.675863, 0.665734, 0.684958, + 0.210643, 1.159339, -0.210693, 0.704306, 0.088870, -0.704306, 0.670277, 0.405750, + 0.210502, 0.903175, -0.210552, 0.705252, -0.072024, -0.705252, 0.675032, 0.207335, + 0.180860, 0.617981, -0.180910, 0.685263, -0.246529, -0.685263, 0.684415, 0.093825, + 0.116188, 0.378825, -0.116237, 0.610279, -0.505051, -0.610279, 0.723612, 0.027920, + 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 1.018456, 0.011649, + 0.059050, 0.290116, -0.059099, 0.407483, -0.817255, -0.407422, 0.018456, 0.011649, + 0.083530, 0.290116, 0.000002, 0.576159, -0.817316, 0.000000, 0.267608, 0.018648, + 0.164335, 0.378825, 0.000002, 0.863063, -0.505051, 0.000000, 0.457225, 0.035136, + 0.255796, 0.617981, 0.000002, 0.969115, -0.246529, 0.000000, 0.515690, 0.098717, + 0.297716, 0.903175, 0.000002, 0.997375, -0.072024, 0.000000, 0.532803, 0.211513, + 0.297915, 1.159339, 0.000002, 0.996033, 0.088870, 0.000000, 0.541872, 0.409545, + 0.249370, 1.422079, 0.000002, 0.955840, 0.293832, 0.000000, 0.550746, 0.688375, + 0.158680, 1.619116, 0.000002, 0.826655, 0.562639, 0.000000, 0.562378, 0.848006, + 0.080284, 1.692897, 0.000001, 0.508194, 0.861232, 0.000000, 0.577714, 0.913236, + 0.056754, 1.692897, 0.056808, 0.359325, 0.861232, 0.359325, 0.500528, 0.928224, + 0.112188, 1.619116, 0.112242, 0.584552, 0.562670, 0.584552, 0.459880, 0.866817, + 0.176316, 1.422079, 0.176370, 0.675863, 0.293832, 0.675863, 0.433163, 0.709519, + 0.210642, 1.159339, 0.210696, 0.704306, 0.088870, 0.704306, 0.415507, 0.432148, + 0.210501, 0.903175, 0.210555, 0.705252, -0.072024, 0.705252, 0.399773, 0.235351, + 0.180860, 0.617981, 0.180914, 0.685263, -0.246529, 0.685263, 0.375517, 0.124299, + 0.116187, 0.378825, 0.116241, 0.610279, -0.505051, 0.610279, 0.325269, 0.063109, + 0.059049, 0.290116, 0.059103, 0.407361, -0.817347, 0.407392, 0.248452, 0.040330, + -0.000053, 0.290116, 0.083583, 0.000000, -0.817316, 0.576159, 0.199939, 0.056802, + -0.000053, 0.378825, 0.164389, 0.000000, -0.505051, 0.863063, 0.234895, 0.086200, + -0.000053, 0.617981, 0.255850, 0.000000, -0.246529, 0.969115, 0.262269, 0.150492, + -0.000052, 0.903175, 0.297769, 0.000000, -0.072024, 0.997375, 0.278892, 0.262611, + -0.000052, 1.159339, 0.297968, 0.000000, 0.088870, 0.996033, 0.291619, 0.459894, + -0.000052, 1.422079, 0.249424, 0.000000, 0.293832, 0.955840, 0.308400, 0.737559, + -0.000052, 1.619116, 0.158734, 0.000000, 0.562670, 0.826655, 0.340691, 0.894603, + -0.000052, 1.692897, 0.080338, 0.000000, 0.861232, 0.508194, 0.411564, 0.953109, + -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 0.247502, 0.980115, + -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 0.186319, 0.915857, + -0.176420, 1.422079, 0.176369, -0.675863, 0.293832, 0.675863, 0.173739, 0.755927, + -0.210747, 1.159339, 0.210696, -0.704306, 0.088870, 0.704306, 0.168491, 0.476740, + -0.210606, 0.903175, 0.210555, -0.705252, -0.072024, 0.705252, 0.164886, 0.278291, + -0.180964, 0.617981, 0.180913, -0.685263, -0.246529, 0.685263, 0.160531, 0.164632, + -0.116292, 0.378825, 0.116240, -0.610279, -0.505051, 0.610279, 0.153922, 0.097744, + -0.059154, 0.290116, 0.059102, -0.407453, -0.817255, 0.407483, 0.145909, 0.064880, + -0.164439, 0.378825, 0.000001, -0.863063, -0.505051, 0.000000, 0.074527, 0.095355, + -0.255900, 0.617981, 0.000001, -0.969115, -0.246529, 0.000000, 0.061122, 0.161660, + -0.297820, 0.903175, 0.000001, -0.997375, -0.072024, 0.000000, 0.052424, 0.274946, + -0.298019, 1.159339, 0.000001, -0.996033, 0.088870, 0.000000, 0.045340, 0.473093, + -0.249474, 1.422079, 0.000001, -0.955840, 0.293832, 0.000000, 0.035246, 0.751852, + -0.158784, 1.619116, 0.000001, -0.826655, 0.562639, 0.000000, 0.012361, 0.910828, + -0.056858, 1.692897, 0.056808, -0.359325, 0.861232, 0.359325, 1.247502, 0.980115, + -0.112293, 1.619116, 0.112242, -0.584552, 0.562670, 0.584552, 1.186319, 0.915857 + ], + "parts": [ + { + "id": "mpart1", + "type": "TRIANGLES", + "indices": [ + 0, 1, 2, 3, 4, 5, 0, 2, 6, 3, 7, 4, + 0, 6, 8, 3, 9, 7, 0, 8, 10, 3, 11, 9, + 0, 10, 12, 3, 13, 11, 12, 1, 0, 3, 5, 13, + 1, 5, 4, 1, 4, 2, 2, 4, 7, 2, 7, 6, + 6, 7, 9, 6, 9, 8, 8, 9, 11, 8, 11, 10, + 10, 11, 13, 10, 13, 12, 5, 1, 12, 5, 12, 13, + 14, 15, 16, 16, 15, 17, 16, 17, 18, 18, 17, 19, + 18, 19, 20, 20, 19, 21, 20, 21, 22, 22, 21, 23, + 22, 23, 24, 24, 23, 25, 24, 25, 26, 26, 25, 27, + 26, 27, 28, 28, 27, 29, 28, 29, 30, 31, 32, 33, + 29, 34, 35, 27, 36, 34, 27, 34, 29, 25, 37, 36, + 25, 36, 27, 23, 38, 37, 23, 37, 25, 21, 39, 38, + 21, 38, 23, 19, 40, 39, 19, 39, 21, 17, 41, 40, + 17, 40, 19, 15, 42, 41, 15, 41, 17, 15, 14, 42, + 42, 14, 43, 42, 43, 44, 42, 44, 41, 41, 44, 45, + 41, 45, 40, 40, 45, 46, 40, 46, 39, 39, 46, 47, + 39, 47, 38, 38, 47, 48, 38, 48, 37, 37, 48, 49, + 37, 49, 36, 36, 49, 50, 36, 50, 34, 34, 50, 35, + 51, 52, 33, 49, 53, 52, 49, 52, 50, 48, 54, 53, + 48, 53, 49, 47, 55, 54, 47, 54, 48, 46, 56, 55, + 46, 55, 47, 45, 57, 56, 45, 56, 46, 44, 58, 57, + 44, 57, 45, 43, 59, 58, 43, 58, 44, 43, 14, 59, + 59, 14, 60, 59, 60, 61, 59, 61, 58, 58, 61, 62, + 58, 62, 57, 57, 62, 63, 57, 63, 56, 56, 63, 64, + 56, 64, 55, 55, 64, 65, 55, 65, 54, 54, 65, 66, + 54, 66, 53, 53, 66, 67, 53, 67, 52, 52, 67, 33, + 67, 68, 33, 66, 69, 68, 66, 68, 67, 65, 70, 69, + 65, 69, 66, 64, 71, 70, 64, 70, 65, 63, 72, 71, + 63, 71, 64, 62, 73, 72, 62, 72, 63, 61, 74, 73, + 61, 73, 62, 60, 75, 74, 60, 74, 61, 60, 14, 75, + 75, 14, 76, 75, 76, 77, 75, 77, 74, 74, 77, 78, + 74, 78, 73, 73, 78, 79, 73, 79, 72, 72, 79, 80, + 72, 80, 71, 71, 80, 81, 71, 81, 70, 70, 81, 82, + 70, 82, 69, 69, 82, 83, 69, 83, 68, 68, 83, 33, + 83, 31, 33, 82, 84, 31, 82, 31, 83, 81, 85, 84, + 81, 84, 82, 80, 86, 85, 80, 85, 81, 79, 87, 86, + 79, 86, 80, 78, 88, 87, 78, 87, 79, 77, 89, 88, + 77, 88, 78, 90, 16, 18, 90, 18, 91, 90, 14, 16 + + ] + } + ] + } + ], + "materials": [ + { + "id": "_tree.png", + "diffuse": [ 0.900000, 0.900000, 0.900000], + "specular": [ 0.100000, 0.100000, 0.100000], + "textures": [ + { + "id": "_tree.png", + "filename": "tree.png", + "type": "DIFFUSE" + } + ] + } + ], + "nodes": [ + { + "id": "treeA_root", + "parts": [ + { + "meshpartid": "mpart1", + "materialid": "_tree.png", + "uvMapping": [[ 0]] + } + ] + } + ], + "animations": [] } \ No newline at end of file diff --git a/vtm-web-app/src/org/oscim/web/client/GwtLauncher.java b/vtm-web-app/src/org/oscim/web/client/GwtLauncher.java index 27a6235b..dbe20666 100644 --- a/vtm-web-app/src/org/oscim/web/client/GwtLauncher.java +++ b/vtm-web-app/src/org/oscim/web/client/GwtLauncher.java @@ -1,74 +1,74 @@ -/* - * Copyright 2013 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.web.client; - -import org.oscim.core.Tile; -import org.oscim.gdx.client.MapConfig; - -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.backends.gwt.GwtApplication; -import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; -import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderCallback; -import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderState; - -public class GwtLauncher extends GwtApplication { - - @Override - public GwtApplicationConfiguration getConfig() { - - GwtApplicationConfiguration cfg = - new GwtApplicationConfiguration(getWindowWidth(), - getWindowHeight()); - - cfg.canvasId = "map-canvas"; - cfg.stencil = true; - cfg.fps = 120; - - return cfg; - } - - @Override - public ApplicationListener getApplicationListener() { - Tile.SIZE = MapConfig.get().getTileSize(); - - return new GwtMap(); - } - - @Override - public PreloaderCallback getPreloaderCallback() { - return new PreloaderCallback() { - - @Override - public void update(PreloaderState state) { - } - - @Override - public void error(String file) { - //log.debug("error loading " + file); - } - }; - } - - private static native int getWindowWidth() /*-{ - return $wnd.innerWidth; - }-*/; - - private static native int getWindowHeight() /*-{ - return $wnd.innerHeight; - }-*/; - -} +/* + * Copyright 2013 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.web.client; + +import org.oscim.core.Tile; +import org.oscim.gdx.client.MapConfig; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.gwt.GwtApplication; +import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; +import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderCallback; +import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderState; + +public class GwtLauncher extends GwtApplication { + + @Override + public GwtApplicationConfiguration getConfig() { + + GwtApplicationConfiguration cfg = + new GwtApplicationConfiguration(getWindowWidth(), + getWindowHeight()); + + cfg.canvasId = "map-canvas"; + cfg.stencil = true; + cfg.fps = 120; + + return cfg; + } + + @Override + public ApplicationListener getApplicationListener() { + Tile.SIZE = MapConfig.get().getTileSize(); + + return new GwtMap(); + } + + @Override + public PreloaderCallback getPreloaderCallback() { + return new PreloaderCallback() { + + @Override + public void update(PreloaderState state) { + } + + @Override + public void error(String file) { + //log.debug("error loading " + file); + } + }; + } + + private static native int getWindowWidth() /*-{ + return $wnd.innerWidth; + }-*/; + + private static native int getWindowHeight() /*-{ + return $wnd.innerHeight; + }-*/; + +} diff --git a/vtm-web-app/war/index.html b/vtm-web-app/war/index.html index 7e1fd7b6..074b952c 100644 --- a/vtm-web-app/war/index.html +++ b/vtm-web-app/war/index.html @@ -1,75 +1,75 @@ - - - -vtm-gdx - - - - - - - - - - - - - - - - -
- Source | map data © OpenStreetMap contributors | OpenScienceMap -
- -
- -
- - - - - - - - - + + + +vtm-gdx + + + + + + + + + + + + + + + + +
+ Source | map data © OpenStreetMap contributors | OpenScienceMap +
+ +
+ +
+ + + + + + + + + diff --git a/vtm-web-js/src/org/oscim/web/client/GwtLauncher.java b/vtm-web-js/src/org/oscim/web/client/GwtLauncher.java index 3be62325..2fee4a67 100644 --- a/vtm-web-js/src/org/oscim/web/client/GwtLauncher.java +++ b/vtm-web-js/src/org/oscim/web/client/GwtLauncher.java @@ -1,84 +1,84 @@ -/* - * Copyright 2013 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.web.client; - -import org.oscim.core.Tile; -import org.oscim.gdx.client.MapConfig; -import org.timepedia.exporter.client.ExporterUtil; - -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.backends.gwt.GwtApplication; -import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; -import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderCallback; -import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderState; - -public class GwtLauncher extends GwtApplication { - - @Override - public void onModuleLoad() { - //GWT.create(GwtGdxMap.class); - //JsOverlays.init(); - ExporterUtil.exportAll(); - - super.onModuleLoad(); - } - - @Override - public GwtApplicationConfiguration getConfig() { - - GwtApplicationConfiguration cfg = - new GwtApplicationConfiguration(getWindowWidth(), - getWindowHeight()); - - cfg.canvasId = "map-canvas"; - cfg.stencil = true; - cfg.fps = 120; - - return cfg; - } - - @Override - public ApplicationListener getApplicationListener() { - Tile.SIZE = MapConfig.get().getTileSize(); - - return new GwtMap(); - } - - @Override - public PreloaderCallback getPreloaderCallback() { - return new PreloaderCallback() { - - @Override - public void update(PreloaderState state) { - } - - @Override - public void error(String file) { - //log.debug("error loading " + file); - } - }; - } - - private static native int getWindowWidth() /*-{ - return $wnd.innerWidth; - }-*/; - - private static native int getWindowHeight() /*-{ - return $wnd.innerHeight; - }-*/; - -} +/* + * Copyright 2013 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.web.client; + +import org.oscim.core.Tile; +import org.oscim.gdx.client.MapConfig; +import org.timepedia.exporter.client.ExporterUtil; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.gwt.GwtApplication; +import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; +import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderCallback; +import com.badlogic.gdx.backends.gwt.preloader.Preloader.PreloaderState; + +public class GwtLauncher extends GwtApplication { + + @Override + public void onModuleLoad() { + //GWT.create(GwtGdxMap.class); + //JsOverlays.init(); + ExporterUtil.exportAll(); + + super.onModuleLoad(); + } + + @Override + public GwtApplicationConfiguration getConfig() { + + GwtApplicationConfiguration cfg = + new GwtApplicationConfiguration(getWindowWidth(), + getWindowHeight()); + + cfg.canvasId = "map-canvas"; + cfg.stencil = true; + cfg.fps = 120; + + return cfg; + } + + @Override + public ApplicationListener getApplicationListener() { + Tile.SIZE = MapConfig.get().getTileSize(); + + return new GwtMap(); + } + + @Override + public PreloaderCallback getPreloaderCallback() { + return new PreloaderCallback() { + + @Override + public void update(PreloaderState state) { + } + + @Override + public void error(String file) { + //log.debug("error loading " + file); + } + }; + } + + private static native int getWindowWidth() /*-{ + return $wnd.innerWidth; + }-*/; + + private static native int getWindowHeight() /*-{ + return $wnd.innerHeight; + }-*/; + +} diff --git a/vtm-web-js/war/index.html b/vtm-web-js/war/index.html index 10b655e7..6d90d342 100644 --- a/vtm-web-js/war/index.html +++ b/vtm-web-js/war/index.html @@ -1,33 +1,33 @@ - - - -vtm-web-js - - - - - - - - -
- - Your browser does not support the HTML5 canvas tag. - -
- - - - - - - -
- Source | map data © OpenStreetMap contributors | OpenScienceMap -
- - + + + +vtm-web-js + + + + + + + + +
+ + Your browser does not support the HTML5 canvas tag. + +
+ + + + + + + +
+ Source | map data © OpenStreetMap contributors | OpenScienceMap +
+ + diff --git a/vtm-web/src/com/badlogic/gdx/backends/Gdx.gwt.xml b/vtm-web/src/com/badlogic/gdx/backends/Gdx.gwt.xml index f406c9d9..54c3b707 100644 --- a/vtm-web/src/com/badlogic/gdx/backends/Gdx.gwt.xml +++ b/vtm-web/src/com/badlogic/gdx/backends/Gdx.gwt.xml @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java index 2553979c..1721f083 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtGraphics.java @@ -1,342 +1,342 @@ -/******************************************************************************* - * Copyright 2011 See libgdx AUTHORS file. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package com.badlogic.gdx.backends.gwt; - -import org.oscim.gdx.client.GdxGL; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Graphics; -import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.GL30; -import com.badlogic.gdx.utils.GdxRuntimeException; -import com.google.gwt.canvas.client.Canvas; -import com.google.gwt.dom.client.CanvasElement; -import com.google.gwt.dom.client.Document; -import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.webgl.client.WebGLContextAttributes; -import com.google.gwt.webgl.client.WebGLRenderingContext; - -public class GwtGraphics implements Graphics { - static final Logger log = LoggerFactory.getLogger(GwtGraphics.class); - - CanvasElement canvas; - WebGLRenderingContext context; - GL20 gl; - String extensions; - float fps = 0; - long lastTimeStamp = System.currentTimeMillis(); - float deltaTime = 0; - float time = 0; - int frames; - GwtApplicationConfiguration config; - boolean inFullscreenMode = false; - double pixelRatio; - - public GwtGraphics(Panel root, final GwtApplicationConfiguration config) { - this.pixelRatio = getDevicePixelRatioJSNI(); - - if (config.canvasId == null) { - Canvas canvasWidget = Canvas.createIfSupported(); - if (canvasWidget == null) - throw new GdxRuntimeException("Canvas not supported"); - canvas = canvasWidget.getCanvasElement(); - root.add(canvasWidget); - } else { - canvas = (CanvasElement) Document.get().getElementById(config.canvasId); - - canvas.setWidth((int) (config.width * pixelRatio)); - canvas.setHeight((int) (config.height * pixelRatio)); - - canvas.getStyle().setWidth(config.width, Unit.PX); - canvas.getStyle().setHeight(config.height, Unit.PX); - } - - this.config = config; - - WebGLContextAttributes attributes = WebGLContextAttributes.create(); - attributes.setAntialias(config.antialiasing); - attributes.setStencil(config.stencil); - attributes.setAlpha(false); - attributes.setPremultipliedAlpha(false); - - context = WebGLRenderingContext.getContext(canvas, attributes); - if (context == null) - throw new GdxRuntimeException("Could not create Canvas for " + attributes); - - context.viewport(0, 0, config.width, config.height); - - // this actually *enables* the option to use std derivatives in shader.. - if (context.getExtension("OES_standard_derivatives") == null) { - log.error("Missing gl extension for OES_standard_derivatives"); - } - - if (context.getExtension("WEBKIT_WEBGL_depth_texture") == null) { - log.error("Missing gl extension for WEBKIT_WEBGL_depth_texture"); - } - - this.gl = config.useDebugGL ? new GwtGL20Debug(context) : new GdxGL(context); - } - - public static native double getDevicePixelRatioJSNI() /*-{ - return $wnd.devicePixelRatio || 1.0; - }-*/; - - public static native int getWindowWidthJSNI() /*-{ - return $wnd.innerWidth; - }-*/; - - public static native int getWindowHeightJSNI() /*-{ - return $wnd.innerHeight; - }-*/; - - public WebGLRenderingContext getContext() { - return context; - } - - @Override - public GL20 getGL20() { - return gl; - } - - @Override - public int getWidth() { - return canvas.getWidth(); - } - - @Override - public int getHeight() { - return canvas.getHeight(); - } - - @Override - public float getDeltaTime() { - return deltaTime; - } - - @Override - public int getFramesPerSecond() { - return (int) fps; - } - - @Override - public GraphicsType getType() { - return GraphicsType.WebGL; - } - - @Override - public float getPpiX() { - return 96; - } - - @Override - public float getPpiY() { - return 96; - } - - @Override - public float getPpcX() { - return 96 / 2.54f; - } - - @Override - public float getPpcY() { - return 96 / 2.54f; - } - - @Override - public boolean supportsDisplayModeChange() { - return true; - } - - @Override - public DisplayMode[] getDisplayModes() { - return new DisplayMode[] { new DisplayMode(getScreenWidthJSNI(), getScreenHeightJSNI(), 60, - 8) { - } }; - } - - private native int getScreenWidthJSNI() /*-{ - return $wnd.screen.width; - }-*/; - - private native int getScreenHeightJSNI() /*-{ - return $wnd.screen.height; - }-*/; - - private native boolean isFullscreenJSNI() /*-{ - if ("webkitIsFullScreen" in $doc) { - return $doc.webkitIsFullScreen; - } - if ("mozFullScreen" in $doc) { - return $doc.mozFullScreen; - } - return false - }-*/; - - private void fullscreenChanged() { - if (!isFullscreen()) { - canvas.setWidth(config.width); - canvas.setHeight(config.height); - } - } - - private native boolean setFullscreenJSNI(GwtGraphics graphics, CanvasElement element) /*-{ - if (element.webkitRequestFullScreen) { - element.width = $wnd.screen.width; - element.height = $wnd.screen.height; - element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); - $doc - .addEventListener( - "webkitfullscreenchange", - function() { - graphics.@com.badlogic.gdx.backends.gwt.GwtGraphics::fullscreenChanged()(); - }, false); - return true; - } - if (element.mozRequestFullScreen) { - element.width = $wnd.screen.width; - element.height = $wnd.screen.height; - element.mozRequestFullScreen(); - $doc - .addEventListener( - "mozfullscreenchange", - function() { - graphics.@com.badlogic.gdx.backends.gwt.GwtGraphics::fullscreenChanged()(); - }, false); - return true; - } - return false; - }-*/; - - private native void exitFullscreen() /*-{ - if ($doc.webkitExitFullscreen) - $doc.webkitExitFullscreen(); - if ($doc.mozExitFullscreen) - $doc.mozExitFullscreen(); - }-*/; - - @Override - public DisplayMode getDesktopDisplayMode() { - return new DisplayMode(getScreenWidthJSNI(), getScreenHeightJSNI(), 60, 8) { - }; - } - - @Override - public boolean setDisplayMode(DisplayMode displayMode) { - if (displayMode.width != getScreenWidthJSNI() - && displayMode.height != getScreenHeightJSNI()) - return false; - return setFullscreenJSNI(this, canvas); - } - - @Override - public boolean setDisplayMode(int width, int height, boolean fullscreen) { - if (fullscreen) { - if (width != getScreenWidthJSNI() && height != getScreenHeightJSNI()) - return false; - return setFullscreenJSNI(this, canvas); - } else { - if (isFullscreenJSNI()) - exitFullscreen(); - canvas.setWidth(width); - canvas.setHeight(height); - canvas.getStyle().setWidth(width, Unit.PX); - canvas.getStyle().setHeight(height, Unit.PX); - return true; - } - } - - @Override - public BufferFormat getBufferFormat() { - return new BufferFormat(8, 8, 8, 0, 16, config.stencil ? 8 : 0, 0, false); - } - - @Override - public boolean supportsExtension(String extension) { - if (extensions == null) - extensions = Gdx.gl.glGetString(GL20.GL_EXTENSIONS); - return extensions.contains(extension); - } - - public void update() { - long currTimeStamp = System.currentTimeMillis(); - deltaTime = (currTimeStamp - lastTimeStamp) / 1000.0f; - lastTimeStamp = currTimeStamp; - time += deltaTime; - frames++; - if (time > 1) { - this.fps = frames; - time = 0; - frames = 0; - } - } - - @Override - public void setTitle(String title) { - } - - @Override - public void setVSync(boolean vsync) { - } - - @Override - public float getDensity() { - return 96.0f / 160; - } - - @Override - public void setContinuousRendering(boolean isContinuous) { - } - - @Override - public boolean isContinuousRendering() { - return false; - } - - @Override - public void requestRendering() { - } - - @Override - public float getRawDeltaTime() { - return getDeltaTime(); - } - - @Override - public boolean isFullscreen() { - return isFullscreenJSNI(); - } - - @Override - public boolean isGL30Available() { - return false; - } - - @Override - public GL30 getGL30() { - return null; - } - - @Override - public long getFrameId() { - // TODO Auto-generated method stub - return 0; - } -} +/******************************************************************************* + * Copyright 2011 See libgdx AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package com.badlogic.gdx.backends.gwt; + +import org.oscim.gdx.client.GdxGL; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Graphics; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.GL30; +import com.badlogic.gdx.utils.GdxRuntimeException; +import com.google.gwt.canvas.client.Canvas; +import com.google.gwt.dom.client.CanvasElement; +import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.ui.Panel; +import com.google.gwt.webgl.client.WebGLContextAttributes; +import com.google.gwt.webgl.client.WebGLRenderingContext; + +public class GwtGraphics implements Graphics { + static final Logger log = LoggerFactory.getLogger(GwtGraphics.class); + + CanvasElement canvas; + WebGLRenderingContext context; + GL20 gl; + String extensions; + float fps = 0; + long lastTimeStamp = System.currentTimeMillis(); + float deltaTime = 0; + float time = 0; + int frames; + GwtApplicationConfiguration config; + boolean inFullscreenMode = false; + double pixelRatio; + + public GwtGraphics(Panel root, final GwtApplicationConfiguration config) { + this.pixelRatio = getDevicePixelRatioJSNI(); + + if (config.canvasId == null) { + Canvas canvasWidget = Canvas.createIfSupported(); + if (canvasWidget == null) + throw new GdxRuntimeException("Canvas not supported"); + canvas = canvasWidget.getCanvasElement(); + root.add(canvasWidget); + } else { + canvas = (CanvasElement) Document.get().getElementById(config.canvasId); + + canvas.setWidth((int) (config.width * pixelRatio)); + canvas.setHeight((int) (config.height * pixelRatio)); + + canvas.getStyle().setWidth(config.width, Unit.PX); + canvas.getStyle().setHeight(config.height, Unit.PX); + } + + this.config = config; + + WebGLContextAttributes attributes = WebGLContextAttributes.create(); + attributes.setAntialias(config.antialiasing); + attributes.setStencil(config.stencil); + attributes.setAlpha(false); + attributes.setPremultipliedAlpha(false); + + context = WebGLRenderingContext.getContext(canvas, attributes); + if (context == null) + throw new GdxRuntimeException("Could not create Canvas for " + attributes); + + context.viewport(0, 0, config.width, config.height); + + // this actually *enables* the option to use std derivatives in shader.. + if (context.getExtension("OES_standard_derivatives") == null) { + log.error("Missing gl extension for OES_standard_derivatives"); + } + + if (context.getExtension("WEBKIT_WEBGL_depth_texture") == null) { + log.error("Missing gl extension for WEBKIT_WEBGL_depth_texture"); + } + + this.gl = config.useDebugGL ? new GwtGL20Debug(context) : new GdxGL(context); + } + + public static native double getDevicePixelRatioJSNI() /*-{ + return $wnd.devicePixelRatio || 1.0; + }-*/; + + public static native int getWindowWidthJSNI() /*-{ + return $wnd.innerWidth; + }-*/; + + public static native int getWindowHeightJSNI() /*-{ + return $wnd.innerHeight; + }-*/; + + public WebGLRenderingContext getContext() { + return context; + } + + @Override + public GL20 getGL20() { + return gl; + } + + @Override + public int getWidth() { + return canvas.getWidth(); + } + + @Override + public int getHeight() { + return canvas.getHeight(); + } + + @Override + public float getDeltaTime() { + return deltaTime; + } + + @Override + public int getFramesPerSecond() { + return (int) fps; + } + + @Override + public GraphicsType getType() { + return GraphicsType.WebGL; + } + + @Override + public float getPpiX() { + return 96; + } + + @Override + public float getPpiY() { + return 96; + } + + @Override + public float getPpcX() { + return 96 / 2.54f; + } + + @Override + public float getPpcY() { + return 96 / 2.54f; + } + + @Override + public boolean supportsDisplayModeChange() { + return true; + } + + @Override + public DisplayMode[] getDisplayModes() { + return new DisplayMode[] { new DisplayMode(getScreenWidthJSNI(), getScreenHeightJSNI(), 60, + 8) { + } }; + } + + private native int getScreenWidthJSNI() /*-{ + return $wnd.screen.width; + }-*/; + + private native int getScreenHeightJSNI() /*-{ + return $wnd.screen.height; + }-*/; + + private native boolean isFullscreenJSNI() /*-{ + if ("webkitIsFullScreen" in $doc) { + return $doc.webkitIsFullScreen; + } + if ("mozFullScreen" in $doc) { + return $doc.mozFullScreen; + } + return false + }-*/; + + private void fullscreenChanged() { + if (!isFullscreen()) { + canvas.setWidth(config.width); + canvas.setHeight(config.height); + } + } + + private native boolean setFullscreenJSNI(GwtGraphics graphics, CanvasElement element) /*-{ + if (element.webkitRequestFullScreen) { + element.width = $wnd.screen.width; + element.height = $wnd.screen.height; + element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); + $doc + .addEventListener( + "webkitfullscreenchange", + function() { + graphics.@com.badlogic.gdx.backends.gwt.GwtGraphics::fullscreenChanged()(); + }, false); + return true; + } + if (element.mozRequestFullScreen) { + element.width = $wnd.screen.width; + element.height = $wnd.screen.height; + element.mozRequestFullScreen(); + $doc + .addEventListener( + "mozfullscreenchange", + function() { + graphics.@com.badlogic.gdx.backends.gwt.GwtGraphics::fullscreenChanged()(); + }, false); + return true; + } + return false; + }-*/; + + private native void exitFullscreen() /*-{ + if ($doc.webkitExitFullscreen) + $doc.webkitExitFullscreen(); + if ($doc.mozExitFullscreen) + $doc.mozExitFullscreen(); + }-*/; + + @Override + public DisplayMode getDesktopDisplayMode() { + return new DisplayMode(getScreenWidthJSNI(), getScreenHeightJSNI(), 60, 8) { + }; + } + + @Override + public boolean setDisplayMode(DisplayMode displayMode) { + if (displayMode.width != getScreenWidthJSNI() + && displayMode.height != getScreenHeightJSNI()) + return false; + return setFullscreenJSNI(this, canvas); + } + + @Override + public boolean setDisplayMode(int width, int height, boolean fullscreen) { + if (fullscreen) { + if (width != getScreenWidthJSNI() && height != getScreenHeightJSNI()) + return false; + return setFullscreenJSNI(this, canvas); + } else { + if (isFullscreenJSNI()) + exitFullscreen(); + canvas.setWidth(width); + canvas.setHeight(height); + canvas.getStyle().setWidth(width, Unit.PX); + canvas.getStyle().setHeight(height, Unit.PX); + return true; + } + } + + @Override + public BufferFormat getBufferFormat() { + return new BufferFormat(8, 8, 8, 0, 16, config.stencil ? 8 : 0, 0, false); + } + + @Override + public boolean supportsExtension(String extension) { + if (extensions == null) + extensions = Gdx.gl.glGetString(GL20.GL_EXTENSIONS); + return extensions.contains(extension); + } + + public void update() { + long currTimeStamp = System.currentTimeMillis(); + deltaTime = (currTimeStamp - lastTimeStamp) / 1000.0f; + lastTimeStamp = currTimeStamp; + time += deltaTime; + frames++; + if (time > 1) { + this.fps = frames; + time = 0; + frames = 0; + } + } + + @Override + public void setTitle(String title) { + } + + @Override + public void setVSync(boolean vsync) { + } + + @Override + public float getDensity() { + return 96.0f / 160; + } + + @Override + public void setContinuousRendering(boolean isContinuous) { + } + + @Override + public boolean isContinuousRendering() { + return false; + } + + @Override + public void requestRendering() { + } + + @Override + public float getRawDeltaTime() { + return getDeltaTime(); + } + + @Override + public boolean isFullscreen() { + return isFullscreenJSNI(); + } + + @Override + public boolean isGL30Available() { + return false; + } + + @Override + public GL30 getGL30() { + return null; + } + + @Override + public long getFrameId() { + // TODO Auto-generated method stub + return 0; + } +} diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java index 76934dea..3be2b71d 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/backends/gwt/GwtInput.java @@ -1,959 +1,959 @@ -/******************************************************************************* - * Copyright 2011 See AUTHORS file. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package com.badlogic.gdx.backends.gwt; - -import java.util.HashSet; -import java.util.Set; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Input; -import com.badlogic.gdx.InputProcessor; -import com.badlogic.gdx.backends.gwt.widgets.TextInputDialogBox; -import com.badlogic.gdx.backends.gwt.widgets.TextInputDialogBox.TextInputDialogListener; -import com.badlogic.gdx.graphics.Pixmap; -import com.badlogic.gdx.utils.TimeUtils; -import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwt.core.client.JsArray; -import com.google.gwt.dom.client.CanvasElement; -import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.dom.client.Touch; -import com.google.gwt.event.dom.client.KeyCodes; - -public class GwtInput implements Input { - boolean justTouched = false; - private boolean[] touched = new boolean[20]; - private int[] touchX = new int[20]; - private int[] touchY = new int[20]; - private int[] deltaX = new int[20]; - private int[] deltaY = new int[20]; - Set pressedButtons = new HashSet(); - Set pressedKeys = new HashSet(); - InputProcessor processor; - char lastKeyCharPressed; - float keyRepeatTimer; - long currentEventTimeStamp; - final CanvasElement canvas; - boolean hasFocus = true; - - public GwtInput(CanvasElement canvas) { - this.canvas = canvas; - hookEvents(); - } - - @Override - public float getAccelerometerX() { - return 0; - } - - @Override - public float getAccelerometerY() { - return 0; - } - - @Override - public float getAccelerometerZ() { - return 0; - } - - @Override - public int getX() { - return touchX[0]; - } - - @Override - public int getX(int pointer) { - return touchX[pointer]; - } - - @Override - public int getDeltaX() { - return deltaX[0]; - } - - @Override - public int getDeltaX(int pointer) { - return deltaX[pointer]; - } - - @Override - public int getY() { - return touchY[0]; - } - - @Override - public int getY(int pointer) { - return touchY[pointer]; - } - - @Override - public int getDeltaY() { - return deltaY[0]; - } - - @Override - public int getDeltaY(int pointer) { - return deltaY[pointer]; - } - - @Override - public boolean isTouched() { - return touched[0]; - } - - @Override - public boolean justTouched() { - return justTouched; - } - - @Override - public boolean isTouched(int pointer) { - return touched[pointer]; - } - - @Override - public boolean isButtonPressed(int button) { - return button == Buttons.LEFT && touched[0]; - } - - @Override - public boolean isKeyPressed(int key) { - if (key == Keys.ANY_KEY) - return pressedKeys.size() > 0; - return pressedKeys.contains(key); - } - - @Override - public void getTextInput(TextInputListener listener, String title, String text) { - TextInputDialogBox dialog = new TextInputDialogBox(title, text, null); - final TextInputListener capturedListener = listener; - dialog.setListener(new TextInputDialogListener() { - @Override - public void onPositive(String text) { - if (capturedListener != null) { - capturedListener.input(text); - } - } - - @Override - public void onNegative() { - if (capturedListener != null) { - capturedListener.canceled(); - } - } - }); - } - - @Override - public void getPlaceholderTextInput(TextInputListener listener, String title, String placeholder) { - TextInputDialogBox dialog = new TextInputDialogBox(title, null, placeholder); - final TextInputListener capturedListener = listener; - dialog.setListener(new TextInputDialogListener() { - @Override - public void onPositive(String text) { - if (capturedListener != null) { - capturedListener.input(text); - } - } - - @Override - public void onNegative() { - if (capturedListener != null) { - capturedListener.canceled(); - } - } - }); - } - - @Override - public void setOnscreenKeyboardVisible(boolean visible) { - } - - @Override - public void vibrate(int milliseconds) { - } - - @Override - public void vibrate(long[] pattern, int repeat) { - } - - @Override - public void cancelVibrate() { - } - - @Override - public float getAzimuth() { - return 0; - } - - @Override - public float getPitch() { - return 0; - } - - @Override - public float getRoll() { - return 0; - } - - @Override - public void getRotationMatrix(float[] matrix) { - } - - @Override - public long getCurrentEventTime() { - return currentEventTimeStamp; - } - - @Override - public void setCatchBackKey(boolean catchBack) { - } - - @Override - public void setCatchMenuKey(boolean catchMenu) { - } - - @Override - public void setInputProcessor(InputProcessor processor) { - this.processor = processor; - } - - @Override - public InputProcessor getInputProcessor() { - return processor; - } - - @Override - public boolean isPeripheralAvailable(Peripheral peripheral) { - if (peripheral == Peripheral.Accelerometer) - return false; - if (peripheral == Peripheral.Compass) - return false; - if (peripheral == Peripheral.HardwareKeyboard) - return true; - if (peripheral == Peripheral.MultitouchScreen) - return isTouchScreen(); - if (peripheral == Peripheral.OnscreenKeyboard) - return false; - if (peripheral == Peripheral.Vibrator) - return false; - return false; - } - - @Override - public int getRotation() { - return 0; - } - - @Override - public Orientation getNativeOrientation() { - return Orientation.Landscape; - } - - /** - * from https://github.com/toji/game-shim/blob/master/game-shim.js - * - * @return is Cursor catched - */ - private native boolean isCursorCatchedJSNI() /*-{ - if (!navigator.pointer) { - navigator.pointer = navigator.webkitPointer || navigator.mozPointer; - } - if (navigator.pointer) { - if (typeof (navigator.pointer.isLocked) === "boolean") { - // Chrome initially launched with this interface - return navigator.pointer.isLocked; - } else if (typeof (navigator.pointer.isLocked) === "function") { - // Some older builds might provide isLocked as a function - return navigator.pointer.isLocked(); - } else if (typeof (navigator.pointer.islocked) === "function") { - // For compatibility with early Firefox build - return navigator.pointer.islocked(); - } - } - return false; - }-*/; - - /** - * from https://github.com/toji/game-shim/blob/master/game-shim.js - * - * @param element Canvas - */ - private native void setCursorCatchedJSNI(CanvasElement element) /*-{ - // Navigator pointer is not the right interface according to spec. - // Here for backwards compatibility only - if (!navigator.pointer) { - navigator.pointer = navigator.webkitPointer || navigator.mozPointer; - } - // element.requestPointerLock - if (!element.requestPointerLock) { - element.requestPointerLock = (function() { - return element.webkitRequestPointerLock - || element.mozRequestPointerLock || function() { - if (navigator.pointer) { - navigator.pointer.lock(element); - } - }; - })(); - } - element.requestPointerLock(); - }-*/; - - /** from https://github.com/toji/game-shim/blob/master/game-shim.js */ - private native void exitCursorCatchedJSNI() /*-{ - if (!$doc.exitPointerLock) { - $doc.exitPointerLock = (function() { - return $doc.webkitExitPointerLock || $doc.mozExitPointerLock - || function() { - if (navigator.pointer) { - var elem = this; - navigator.pointer.unlock(); - } - }; - })(); - } - }-*/; - - /** - * from https://github.com/toji/game-shim/blob/master/game-shim.js - * - * @param event JavaScript Mouse Event - * @return movement in x direction - */ - private native float getMovementXJSNI(NativeEvent event) /*-{ - return event.movementX || event.webkitMovementX || 0; - }-*/; - - /** - * from https://github.com/toji/game-shim/blob/master/game-shim.js - * - * @param event JavaScript Mouse Event - * @return movement in y direction - */ - private native float getMovementYJSNI(NativeEvent event) /*-{ - return event.movementY || event.webkitMovementY || 0; - }-*/; - - private static native boolean isTouchScreen() /*-{ - return (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0)); - }-*/; - - /** - * works only for Chrome > Version 18 with enabled Mouse Lock enable in - * about:flags or start Chrome with the - * --enable-pointer-lock flag - */ - @Override - public void setCursorCatched(boolean catched) { - if (catched) - setCursorCatchedJSNI(canvas); - else - exitCursorCatchedJSNI(); - } - - @Override - public boolean isCursorCatched() { - return isCursorCatchedJSNI(); - } - - @Override - public void setCursorPosition(int x, int y) { - // FIXME?? - } - - @Override - public void setCursorImage(Pixmap pixmap, int xHotspot, int yHotspot) { - } - - // kindly borrowed from our dear playn friends... - static native void addEventListener(JavaScriptObject target, String name, GwtInput handler, - boolean capture) /*-{ - target - .addEventListener( - name, - function(e) { - handler.@com.badlogic.gdx.backends.gwt.GwtInput::handleEvent(Lcom/google/gwt/dom/client/NativeEvent;)(e); - }, capture); - }-*/; - - private static native float getMouseWheelVelocity(NativeEvent evt) /*-{ - var delta = 0.0; - var agentInfo = @com.badlogic.gdx.backends.gwt.GwtApplication::agentInfo()(); - - if (agentInfo.isFirefox) { - if (agentInfo.isMacOS) { - delta = 1.0 * evt.detail; - } else { - delta = 1.0 * evt.detail / 3; - } - } else if (agentInfo.isOpera) { - if (agentInfo.isLinux) { - delta = -1.0 * evt.wheelDelta / 80; - } else { - // on mac - delta = -1.0 * evt.wheelDelta / 40; - } - } else if (agentInfo.isChrome || agentInfo.isSafari) { - delta = -1.0 * evt.wheelDelta / 120; - // handle touchpad for chrome - if (Math.abs(delta) < 1) { - if (agentInfo.isWindows) { - delta = -1.0 * evt.wheelDelta; - } else if (agentInfo.isMacOS) { - delta = -1.0 * evt.wheelDelta / 3; - } - } - } - return delta; - }-*/; - - /** Kindly borrowed from PlayN. **/ - protected static native String getMouseWheelEvent() /*-{ - if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) { - return "DOMMouseScroll"; - } else { - return "mousewheel"; - } - }-*/; - - /** Kindly borrowed from PlayN. **/ - protected static float getRelativeX(NativeEvent e, Element target) { - return e.getClientX() - target.getAbsoluteLeft() + target.getScrollLeft() - + target.getOwnerDocument().getScrollLeft(); - } - - /** Kindly borrowed from PlayN. **/ - protected static float getRelativeY(NativeEvent e, Element target) { - return e.getClientY() - target.getAbsoluteTop() + target.getScrollTop() - + target.getOwnerDocument().getScrollTop(); - } - - private void hookEvents() { - addEventListener(canvas, "mousedown", this, true); - // addEventListener(Document.get(), "mousedown", this, true); - addEventListener(canvas, "mouseup", this, true); - // addEventListener(Document.get(), "mouseup", this, true); - addEventListener(canvas, "mousemove", this, true); - // addEventListener(Document.get(), "mousemove", this, true); - addEventListener(canvas, getMouseWheelEvent(), this, true); - // addEventListener(Document.get(), "keydown", this, false); - // addEventListener(Document.get(), "keyup", this, false); - // addEventListener(Document.get(), "keypress", this, false); - addEventListener(canvas, "keydown", this, false); - addEventListener(canvas, "keyup", this, false); - addEventListener(canvas, "keypress", this, false); - addEventListener(canvas, "touchstart", this, true); - addEventListener(canvas, "touchmove", this, true); - addEventListener(canvas, "touchcancel", this, true); - addEventListener(canvas, "touchend", this, true); - - } - - private int getButton(int button) { - if (button == NativeEvent.BUTTON_LEFT) - return Buttons.LEFT; - if (button == NativeEvent.BUTTON_RIGHT) - return Buttons.RIGHT; - if (button == NativeEvent.BUTTON_MIDDLE) - return Buttons.MIDDLE; - return Buttons.LEFT; - } - - private void handleEvent(NativeEvent e) { - if (e.getType().equals("mousedown")) { - if (!e.getEventTarget().equals(canvas) || touched[0]) { - float mouseX = (int) getRelativeX(e, canvas); - float mouseY = (int) getRelativeY(e, canvas); - if (mouseX < 0 || mouseX > Gdx.graphics.getWidth() || mouseY < 0 - || mouseY > Gdx.graphics.getHeight()) { - hasFocus = false; - } - return; - } - hasFocus = true; - this.justTouched = true; - this.touched[0] = true; - this.pressedButtons.add(getButton(e.getButton())); - this.deltaX[0] = 0; - this.deltaY[0] = 0; - if (isCursorCatched()) { - this.touchX[0] += getMovementXJSNI(e); - this.touchY[0] += getMovementYJSNI(e); - } else { - this.touchX[0] = (int) getRelativeX(e, canvas); - this.touchY[0] = (int) getRelativeY(e, canvas); - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - if (processor != null) - processor.touchDown(touchX[0], touchY[0], 0, getButton(e.getButton())); - } - - if (e.getType().equals("mousemove")) { - if (isCursorCatched()) { - this.deltaX[0] = (int) getMovementXJSNI(e); - this.deltaY[0] = (int) getMovementYJSNI(e); - this.touchX[0] += getMovementXJSNI(e); - this.touchY[0] += getMovementYJSNI(e); - } else { - this.deltaX[0] = (int) getRelativeX(e, canvas) - touchX[0]; - this.deltaY[0] = (int) getRelativeY(e, canvas) - touchY[0]; - this.touchX[0] = (int) getRelativeX(e, canvas); - this.touchY[0] = (int) getRelativeY(e, canvas); - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - if (processor != null) { - if (touched[0]) - processor.touchDragged(touchX[0], touchY[0], 0); - else - processor.mouseMoved(touchX[0], touchY[0]); - } - } - - if (e.getType().equals("mouseup")) { - if (!touched[0]) - return; - this.pressedButtons.remove(getButton(e.getButton())); - this.touched[0] = pressedButtons.size() > 0; - if (isCursorCatched()) { - this.deltaX[0] = (int) getMovementXJSNI(e); - this.deltaY[0] = (int) getMovementYJSNI(e); - this.touchX[0] += getMovementXJSNI(e); - this.touchY[0] += getMovementYJSNI(e); - } else { - this.deltaX[0] = (int) getRelativeX(e, canvas) - touchX[0]; - this.deltaY[0] = (int) getRelativeY(e, canvas) - touchY[0]; - this.touchX[0] = (int) getRelativeX(e, canvas); - this.touchY[0] = (int) getRelativeY(e, canvas); - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - this.touched[0] = false; - if (processor != null) - processor.touchUp(touchX[0], touchY[0], 0, getButton(e.getButton())); - } - if (e.getType().equals(getMouseWheelEvent())) { - if (processor != null) { - processor.scrolled((int) getMouseWheelVelocity(e)); - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - e.preventDefault(); - } - if (e.getType().equals("keydown") && hasFocus) { - //System.out.println("keydown"); - int code = keyForCode(e.getKeyCode()); - if (code == 67) { - e.preventDefault(); - if (processor != null) { - processor.keyDown(code); - processor.keyTyped('\b'); - } - } else { - if (this.pressedKeys.add(code) && processor != null) { - processor.keyDown(code); - } - } - } - - if (e.getType().equals("keypress") && hasFocus) { - //System.out.println("keypress"); - char c = (char) e.getCharCode(); - if (processor != null) - processor.keyTyped(c); - } - - if (e.getType().equals("keyup") && hasFocus) { - //System.out.println("keyup"); - int code = keyForCode(e.getKeyCode()); - this.pressedKeys.remove(code); - if (processor != null) { - processor.keyUp(code); - } - } - - if (e.getType().equals("touchstart")) { - this.justTouched = true; - JsArray touches = e.getChangedTouches(); - for (int i = 0, j = touches.length(); i < j; i++) { - Touch touch = touches.get(i); - int touchId = touch.getIdentifier(); - touched[touchId] = true; - touchX[touchId] = touch.getRelativeX(canvas); - touchY[touchId] = touch.getRelativeY(canvas); - deltaX[touchId] = 0; - deltaY[touchId] = 0; - if (processor != null) { - processor.touchDown(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); - } - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - e.preventDefault(); - } - if (e.getType().equals("touchmove")) { - JsArray touches = e.getChangedTouches(); - for (int i = 0, j = touches.length(); i < j; i++) { - Touch touch = touches.get(i); - int touchId = touch.getIdentifier(); - deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; - deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; - touchX[touchId] = touch.getRelativeX(canvas); - touchY[touchId] = touch.getRelativeY(canvas); - if (processor != null) { - processor.touchDragged(touchX[touchId], touchY[touchId], touchId); - } - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - e.preventDefault(); - } - if (e.getType().equals("touchcancel")) { - JsArray touches = e.getChangedTouches(); - for (int i = 0, j = touches.length(); i < j; i++) { - Touch touch = touches.get(i); - int touchId = touch.getIdentifier(); - touched[touchId] = false; - deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; - deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; - touchX[touchId] = touch.getRelativeX(canvas); - touchY[touchId] = touch.getRelativeY(canvas); - if (processor != null) { - processor.touchUp(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); - } - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - e.preventDefault(); - } - if (e.getType().equals("touchend")) { - JsArray touches = e.getChangedTouches(); - for (int i = 0, j = touches.length(); i < j; i++) { - Touch touch = touches.get(i); - int touchId = touch.getIdentifier(); - touched[touchId] = false; - deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; - deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; - touchX[touchId] = touch.getRelativeX(canvas); - touchY[touchId] = touch.getRelativeY(canvas); - if (processor != null) { - processor.touchUp(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); - } - } - this.currentEventTimeStamp = TimeUtils.nanoTime(); - e.preventDefault(); - } - // if(hasFocus) e.preventDefault(); - } - - /** borrowed from PlayN, thanks guys **/ - private static int keyForCode(int keyCode) { - switch (keyCode) { - case KeyCodes.KEY_ALT: - return Keys.ALT_LEFT; - case KeyCodes.KEY_BACKSPACE: - return Keys.BACKSPACE; - case KeyCodes.KEY_CTRL: - return Keys.CONTROL_LEFT; - case KeyCodes.KEY_DELETE: - return Keys.DEL; - case KeyCodes.KEY_DOWN: - return Keys.DOWN; - case KeyCodes.KEY_END: - return Keys.END; - case KeyCodes.KEY_ENTER: - return Keys.ENTER; - case KeyCodes.KEY_ESCAPE: - return Keys.ESCAPE; - case KeyCodes.KEY_HOME: - return Keys.HOME; - case KeyCodes.KEY_LEFT: - return Keys.LEFT; - case KeyCodes.KEY_PAGEDOWN: - return Keys.PAGE_DOWN; - case KeyCodes.KEY_PAGEUP: - return Keys.PAGE_UP; - case KeyCodes.KEY_RIGHT: - return Keys.RIGHT; - case KeyCodes.KEY_SHIFT: - return Keys.SHIFT_LEFT; - case KeyCodes.KEY_TAB: - return Keys.TAB; - case KeyCodes.KEY_UP: - return Keys.UP; - - case KEY_PAUSE: - return Keys.UNKNOWN; // FIXME - case KEY_CAPS_LOCK: - return Keys.UNKNOWN; // FIXME - case KEY_SPACE: - return Keys.SPACE; - case KEY_INSERT: - return Keys.INSERT; - case KEY_0: - return Keys.NUM_0; - case KEY_1: - return Keys.NUM_1; - case KEY_2: - return Keys.NUM_2; - case KEY_3: - return Keys.NUM_3; - case KEY_4: - return Keys.NUM_4; - case KEY_5: - return Keys.NUM_5; - case KEY_6: - return Keys.NUM_6; - case KEY_7: - return Keys.NUM_7; - case KEY_8: - return Keys.NUM_8; - case KEY_9: - return Keys.NUM_9; - case KEY_A: - return Keys.A; - case KEY_B: - return Keys.B; - case KEY_C: - return Keys.C; - case KEY_D: - return Keys.D; - case KEY_E: - return Keys.E; - case KEY_F: - return Keys.F; - case KEY_G: - return Keys.G; - case KEY_H: - return Keys.H; - case KEY_I: - return Keys.I; - case KEY_J: - return Keys.J; - case KEY_K: - return Keys.K; - case KEY_L: - return Keys.L; - case KEY_M: - return Keys.M; - case KEY_N: - return Keys.N; - case KEY_O: - return Keys.O; - case KEY_P: - return Keys.P; - case KEY_Q: - return Keys.Q; - case KEY_R: - return Keys.R; - case KEY_S: - return Keys.S; - case KEY_T: - return Keys.T; - case KEY_U: - return Keys.U; - case KEY_V: - return Keys.V; - case KEY_W: - return Keys.W; - case KEY_X: - return Keys.X; - case KEY_Y: - return Keys.Y; - case KEY_Z: - return Keys.Z; - case KEY_LEFT_WINDOW_KEY: - return Keys.UNKNOWN; // FIXME - case KEY_RIGHT_WINDOW_KEY: - return Keys.UNKNOWN; // FIXME - // case KEY_SELECT_KEY: return Keys.SELECT_KEY; - case KEY_NUMPAD0: - return Keys.NUMPAD_0; - case KEY_NUMPAD1: - return Keys.NUMPAD_1; - case KEY_NUMPAD2: - return Keys.NUMPAD_2; - case KEY_NUMPAD3: - return Keys.NUMPAD_3; - case KEY_NUMPAD4: - return Keys.NUMPAD_4; - case KEY_NUMPAD5: - return Keys.NUMPAD_5; - case KEY_NUMPAD6: - return Keys.NUMPAD_6; - case KEY_NUMPAD7: - return Keys.NUMPAD_7; - case KEY_NUMPAD8: - return Keys.NUMPAD_8; - case KEY_NUMPAD9: - return Keys.NUMPAD_9; - case KEY_MULTIPLY: - return Keys.UNKNOWN; // FIXME - case KEY_ADD: - return Keys.PLUS; - case KEY_SUBTRACT: - return Keys.MINUS; - case KEY_DECIMAL_POINT_KEY: - return Keys.PERIOD; - case KEY_DIVIDE: - return Keys.UNKNOWN; // FIXME - case KEY_F1: - return Keys.F1; - case KEY_F2: - return Keys.F2; - case KEY_F3: - return Keys.F3; - case KEY_F4: - return Keys.F4; - case KEY_F5: - return Keys.F5; - case KEY_F6: - return Keys.F6; - case KEY_F7: - return Keys.F7; - case KEY_F8: - return Keys.F8; - case KEY_F9: - return Keys.F9; - case KEY_F10: - return Keys.F10; - case KEY_F11: - return Keys.F11; - case KEY_F12: - return Keys.F12; - case KEY_NUM_LOCK: - return Keys.NUM; - case KEY_SCROLL_LOCK: - return Keys.UNKNOWN; // FIXME - case KEY_SEMICOLON: - return Keys.SEMICOLON; - case KEY_EQUALS: - return Keys.EQUALS; - case KEY_COMMA: - return Keys.COMMA; - case KEY_DASH: - return Keys.MINUS; - case KEY_PERIOD: - return Keys.PERIOD; - case KEY_FORWARD_SLASH: - return Keys.SLASH; - case KEY_GRAVE_ACCENT: - return Keys.UNKNOWN; // FIXME - case KEY_OPEN_BRACKET: - return Keys.LEFT_BRACKET; - case KEY_BACKSLASH: - return Keys.BACKSLASH; - case KEY_CLOSE_BRACKET: - return Keys.RIGHT_BRACKET; - case KEY_SINGLE_QUOTE: - return Keys.APOSTROPHE; - default: - return Keys.UNKNOWN; - } - } - - // these are absent from KeyCodes; we know not why... - private static final int KEY_PAUSE = 19; - private static final int KEY_CAPS_LOCK = 20; - private static final int KEY_SPACE = 32; - private static final int KEY_INSERT = 45; - private static final int KEY_0 = 48; - private static final int KEY_1 = 49; - private static final int KEY_2 = 50; - private static final int KEY_3 = 51; - private static final int KEY_4 = 52; - private static final int KEY_5 = 53; - private static final int KEY_6 = 54; - private static final int KEY_7 = 55; - private static final int KEY_8 = 56; - private static final int KEY_9 = 57; - private static final int KEY_A = 65; - private static final int KEY_B = 66; - private static final int KEY_C = 67; - private static final int KEY_D = 68; - private static final int KEY_E = 69; - private static final int KEY_F = 70; - private static final int KEY_G = 71; - private static final int KEY_H = 72; - private static final int KEY_I = 73; - private static final int KEY_J = 74; - private static final int KEY_K = 75; - private static final int KEY_L = 76; - private static final int KEY_M = 77; - private static final int KEY_N = 78; - private static final int KEY_O = 79; - private static final int KEY_P = 80; - private static final int KEY_Q = 81; - private static final int KEY_R = 82; - private static final int KEY_S = 83; - private static final int KEY_T = 84; - private static final int KEY_U = 85; - private static final int KEY_V = 86; - private static final int KEY_W = 87; - private static final int KEY_X = 88; - private static final int KEY_Y = 89; - private static final int KEY_Z = 90; - private static final int KEY_LEFT_WINDOW_KEY = 91; - private static final int KEY_RIGHT_WINDOW_KEY = 92; - private static final int KEY_SELECT_KEY = 93; - private static final int KEY_NUMPAD0 = 96; - private static final int KEY_NUMPAD1 = 97; - private static final int KEY_NUMPAD2 = 98; - private static final int KEY_NUMPAD3 = 99; - private static final int KEY_NUMPAD4 = 100; - private static final int KEY_NUMPAD5 = 101; - private static final int KEY_NUMPAD6 = 102; - private static final int KEY_NUMPAD7 = 103; - private static final int KEY_NUMPAD8 = 104; - private static final int KEY_NUMPAD9 = 105; - private static final int KEY_MULTIPLY = 106; - private static final int KEY_ADD = 107; - private static final int KEY_SUBTRACT = 109; - private static final int KEY_DECIMAL_POINT_KEY = 110; - private static final int KEY_DIVIDE = 111; - private static final int KEY_F1 = 112; - private static final int KEY_F2 = 113; - private static final int KEY_F3 = 114; - private static final int KEY_F4 = 115; - private static final int KEY_F5 = 116; - private static final int KEY_F6 = 117; - private static final int KEY_F7 = 118; - private static final int KEY_F8 = 119; - private static final int KEY_F9 = 120; - private static final int KEY_F10 = 121; - private static final int KEY_F11 = 122; - private static final int KEY_F12 = 123; - private static final int KEY_NUM_LOCK = 144; - private static final int KEY_SCROLL_LOCK = 145; - private static final int KEY_SEMICOLON = 186; - private static final int KEY_EQUALS = 187; - private static final int KEY_COMMA = 188; - private static final int KEY_DASH = 189; - private static final int KEY_PERIOD = 190; - private static final int KEY_FORWARD_SLASH = 191; - private static final int KEY_GRAVE_ACCENT = 192; - private static final int KEY_OPEN_BRACKET = 219; - private static final int KEY_BACKSLASH = 220; - private static final int KEY_CLOSE_BRACKET = 221; - private static final int KEY_SINGLE_QUOTE = 222; - - @Override - public boolean isKeyJustPressed(int key) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isCatchBackKey() { - // TODO Auto-generated method stub - return false; - } -} +/******************************************************************************* + * Copyright 2011 See AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package com.badlogic.gdx.backends.gwt; + +import java.util.HashSet; +import java.util.Set; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input; +import com.badlogic.gdx.InputProcessor; +import com.badlogic.gdx.backends.gwt.widgets.TextInputDialogBox; +import com.badlogic.gdx.backends.gwt.widgets.TextInputDialogBox.TextInputDialogListener; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.utils.TimeUtils; +import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.core.client.JsArray; +import com.google.gwt.dom.client.CanvasElement; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.dom.client.Touch; +import com.google.gwt.event.dom.client.KeyCodes; + +public class GwtInput implements Input { + boolean justTouched = false; + private boolean[] touched = new boolean[20]; + private int[] touchX = new int[20]; + private int[] touchY = new int[20]; + private int[] deltaX = new int[20]; + private int[] deltaY = new int[20]; + Set pressedButtons = new HashSet(); + Set pressedKeys = new HashSet(); + InputProcessor processor; + char lastKeyCharPressed; + float keyRepeatTimer; + long currentEventTimeStamp; + final CanvasElement canvas; + boolean hasFocus = true; + + public GwtInput(CanvasElement canvas) { + this.canvas = canvas; + hookEvents(); + } + + @Override + public float getAccelerometerX() { + return 0; + } + + @Override + public float getAccelerometerY() { + return 0; + } + + @Override + public float getAccelerometerZ() { + return 0; + } + + @Override + public int getX() { + return touchX[0]; + } + + @Override + public int getX(int pointer) { + return touchX[pointer]; + } + + @Override + public int getDeltaX() { + return deltaX[0]; + } + + @Override + public int getDeltaX(int pointer) { + return deltaX[pointer]; + } + + @Override + public int getY() { + return touchY[0]; + } + + @Override + public int getY(int pointer) { + return touchY[pointer]; + } + + @Override + public int getDeltaY() { + return deltaY[0]; + } + + @Override + public int getDeltaY(int pointer) { + return deltaY[pointer]; + } + + @Override + public boolean isTouched() { + return touched[0]; + } + + @Override + public boolean justTouched() { + return justTouched; + } + + @Override + public boolean isTouched(int pointer) { + return touched[pointer]; + } + + @Override + public boolean isButtonPressed(int button) { + return button == Buttons.LEFT && touched[0]; + } + + @Override + public boolean isKeyPressed(int key) { + if (key == Keys.ANY_KEY) + return pressedKeys.size() > 0; + return pressedKeys.contains(key); + } + + @Override + public void getTextInput(TextInputListener listener, String title, String text) { + TextInputDialogBox dialog = new TextInputDialogBox(title, text, null); + final TextInputListener capturedListener = listener; + dialog.setListener(new TextInputDialogListener() { + @Override + public void onPositive(String text) { + if (capturedListener != null) { + capturedListener.input(text); + } + } + + @Override + public void onNegative() { + if (capturedListener != null) { + capturedListener.canceled(); + } + } + }); + } + + @Override + public void getPlaceholderTextInput(TextInputListener listener, String title, String placeholder) { + TextInputDialogBox dialog = new TextInputDialogBox(title, null, placeholder); + final TextInputListener capturedListener = listener; + dialog.setListener(new TextInputDialogListener() { + @Override + public void onPositive(String text) { + if (capturedListener != null) { + capturedListener.input(text); + } + } + + @Override + public void onNegative() { + if (capturedListener != null) { + capturedListener.canceled(); + } + } + }); + } + + @Override + public void setOnscreenKeyboardVisible(boolean visible) { + } + + @Override + public void vibrate(int milliseconds) { + } + + @Override + public void vibrate(long[] pattern, int repeat) { + } + + @Override + public void cancelVibrate() { + } + + @Override + public float getAzimuth() { + return 0; + } + + @Override + public float getPitch() { + return 0; + } + + @Override + public float getRoll() { + return 0; + } + + @Override + public void getRotationMatrix(float[] matrix) { + } + + @Override + public long getCurrentEventTime() { + return currentEventTimeStamp; + } + + @Override + public void setCatchBackKey(boolean catchBack) { + } + + @Override + public void setCatchMenuKey(boolean catchMenu) { + } + + @Override + public void setInputProcessor(InputProcessor processor) { + this.processor = processor; + } + + @Override + public InputProcessor getInputProcessor() { + return processor; + } + + @Override + public boolean isPeripheralAvailable(Peripheral peripheral) { + if (peripheral == Peripheral.Accelerometer) + return false; + if (peripheral == Peripheral.Compass) + return false; + if (peripheral == Peripheral.HardwareKeyboard) + return true; + if (peripheral == Peripheral.MultitouchScreen) + return isTouchScreen(); + if (peripheral == Peripheral.OnscreenKeyboard) + return false; + if (peripheral == Peripheral.Vibrator) + return false; + return false; + } + + @Override + public int getRotation() { + return 0; + } + + @Override + public Orientation getNativeOrientation() { + return Orientation.Landscape; + } + + /** + * from https://github.com/toji/game-shim/blob/master/game-shim.js + * + * @return is Cursor catched + */ + private native boolean isCursorCatchedJSNI() /*-{ + if (!navigator.pointer) { + navigator.pointer = navigator.webkitPointer || navigator.mozPointer; + } + if (navigator.pointer) { + if (typeof (navigator.pointer.isLocked) === "boolean") { + // Chrome initially launched with this interface + return navigator.pointer.isLocked; + } else if (typeof (navigator.pointer.isLocked) === "function") { + // Some older builds might provide isLocked as a function + return navigator.pointer.isLocked(); + } else if (typeof (navigator.pointer.islocked) === "function") { + // For compatibility with early Firefox build + return navigator.pointer.islocked(); + } + } + return false; + }-*/; + + /** + * from https://github.com/toji/game-shim/blob/master/game-shim.js + * + * @param element Canvas + */ + private native void setCursorCatchedJSNI(CanvasElement element) /*-{ + // Navigator pointer is not the right interface according to spec. + // Here for backwards compatibility only + if (!navigator.pointer) { + navigator.pointer = navigator.webkitPointer || navigator.mozPointer; + } + // element.requestPointerLock + if (!element.requestPointerLock) { + element.requestPointerLock = (function() { + return element.webkitRequestPointerLock + || element.mozRequestPointerLock || function() { + if (navigator.pointer) { + navigator.pointer.lock(element); + } + }; + })(); + } + element.requestPointerLock(); + }-*/; + + /** from https://github.com/toji/game-shim/blob/master/game-shim.js */ + private native void exitCursorCatchedJSNI() /*-{ + if (!$doc.exitPointerLock) { + $doc.exitPointerLock = (function() { + return $doc.webkitExitPointerLock || $doc.mozExitPointerLock + || function() { + if (navigator.pointer) { + var elem = this; + navigator.pointer.unlock(); + } + }; + })(); + } + }-*/; + + /** + * from https://github.com/toji/game-shim/blob/master/game-shim.js + * + * @param event JavaScript Mouse Event + * @return movement in x direction + */ + private native float getMovementXJSNI(NativeEvent event) /*-{ + return event.movementX || event.webkitMovementX || 0; + }-*/; + + /** + * from https://github.com/toji/game-shim/blob/master/game-shim.js + * + * @param event JavaScript Mouse Event + * @return movement in y direction + */ + private native float getMovementYJSNI(NativeEvent event) /*-{ + return event.movementY || event.webkitMovementY || 0; + }-*/; + + private static native boolean isTouchScreen() /*-{ + return (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0)); + }-*/; + + /** + * works only for Chrome > Version 18 with enabled Mouse Lock enable in + * about:flags or start Chrome with the + * --enable-pointer-lock flag + */ + @Override + public void setCursorCatched(boolean catched) { + if (catched) + setCursorCatchedJSNI(canvas); + else + exitCursorCatchedJSNI(); + } + + @Override + public boolean isCursorCatched() { + return isCursorCatchedJSNI(); + } + + @Override + public void setCursorPosition(int x, int y) { + // FIXME?? + } + + @Override + public void setCursorImage(Pixmap pixmap, int xHotspot, int yHotspot) { + } + + // kindly borrowed from our dear playn friends... + static native void addEventListener(JavaScriptObject target, String name, GwtInput handler, + boolean capture) /*-{ + target + .addEventListener( + name, + function(e) { + handler.@com.badlogic.gdx.backends.gwt.GwtInput::handleEvent(Lcom/google/gwt/dom/client/NativeEvent;)(e); + }, capture); + }-*/; + + private static native float getMouseWheelVelocity(NativeEvent evt) /*-{ + var delta = 0.0; + var agentInfo = @com.badlogic.gdx.backends.gwt.GwtApplication::agentInfo()(); + + if (agentInfo.isFirefox) { + if (agentInfo.isMacOS) { + delta = 1.0 * evt.detail; + } else { + delta = 1.0 * evt.detail / 3; + } + } else if (agentInfo.isOpera) { + if (agentInfo.isLinux) { + delta = -1.0 * evt.wheelDelta / 80; + } else { + // on mac + delta = -1.0 * evt.wheelDelta / 40; + } + } else if (agentInfo.isChrome || agentInfo.isSafari) { + delta = -1.0 * evt.wheelDelta / 120; + // handle touchpad for chrome + if (Math.abs(delta) < 1) { + if (agentInfo.isWindows) { + delta = -1.0 * evt.wheelDelta; + } else if (agentInfo.isMacOS) { + delta = -1.0 * evt.wheelDelta / 3; + } + } + } + return delta; + }-*/; + + /** Kindly borrowed from PlayN. **/ + protected static native String getMouseWheelEvent() /*-{ + if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) { + return "DOMMouseScroll"; + } else { + return "mousewheel"; + } + }-*/; + + /** Kindly borrowed from PlayN. **/ + protected static float getRelativeX(NativeEvent e, Element target) { + return e.getClientX() - target.getAbsoluteLeft() + target.getScrollLeft() + + target.getOwnerDocument().getScrollLeft(); + } + + /** Kindly borrowed from PlayN. **/ + protected static float getRelativeY(NativeEvent e, Element target) { + return e.getClientY() - target.getAbsoluteTop() + target.getScrollTop() + + target.getOwnerDocument().getScrollTop(); + } + + private void hookEvents() { + addEventListener(canvas, "mousedown", this, true); + // addEventListener(Document.get(), "mousedown", this, true); + addEventListener(canvas, "mouseup", this, true); + // addEventListener(Document.get(), "mouseup", this, true); + addEventListener(canvas, "mousemove", this, true); + // addEventListener(Document.get(), "mousemove", this, true); + addEventListener(canvas, getMouseWheelEvent(), this, true); + // addEventListener(Document.get(), "keydown", this, false); + // addEventListener(Document.get(), "keyup", this, false); + // addEventListener(Document.get(), "keypress", this, false); + addEventListener(canvas, "keydown", this, false); + addEventListener(canvas, "keyup", this, false); + addEventListener(canvas, "keypress", this, false); + addEventListener(canvas, "touchstart", this, true); + addEventListener(canvas, "touchmove", this, true); + addEventListener(canvas, "touchcancel", this, true); + addEventListener(canvas, "touchend", this, true); + + } + + private int getButton(int button) { + if (button == NativeEvent.BUTTON_LEFT) + return Buttons.LEFT; + if (button == NativeEvent.BUTTON_RIGHT) + return Buttons.RIGHT; + if (button == NativeEvent.BUTTON_MIDDLE) + return Buttons.MIDDLE; + return Buttons.LEFT; + } + + private void handleEvent(NativeEvent e) { + if (e.getType().equals("mousedown")) { + if (!e.getEventTarget().equals(canvas) || touched[0]) { + float mouseX = (int) getRelativeX(e, canvas); + float mouseY = (int) getRelativeY(e, canvas); + if (mouseX < 0 || mouseX > Gdx.graphics.getWidth() || mouseY < 0 + || mouseY > Gdx.graphics.getHeight()) { + hasFocus = false; + } + return; + } + hasFocus = true; + this.justTouched = true; + this.touched[0] = true; + this.pressedButtons.add(getButton(e.getButton())); + this.deltaX[0] = 0; + this.deltaY[0] = 0; + if (isCursorCatched()) { + this.touchX[0] += getMovementXJSNI(e); + this.touchY[0] += getMovementYJSNI(e); + } else { + this.touchX[0] = (int) getRelativeX(e, canvas); + this.touchY[0] = (int) getRelativeY(e, canvas); + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + if (processor != null) + processor.touchDown(touchX[0], touchY[0], 0, getButton(e.getButton())); + } + + if (e.getType().equals("mousemove")) { + if (isCursorCatched()) { + this.deltaX[0] = (int) getMovementXJSNI(e); + this.deltaY[0] = (int) getMovementYJSNI(e); + this.touchX[0] += getMovementXJSNI(e); + this.touchY[0] += getMovementYJSNI(e); + } else { + this.deltaX[0] = (int) getRelativeX(e, canvas) - touchX[0]; + this.deltaY[0] = (int) getRelativeY(e, canvas) - touchY[0]; + this.touchX[0] = (int) getRelativeX(e, canvas); + this.touchY[0] = (int) getRelativeY(e, canvas); + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + if (processor != null) { + if (touched[0]) + processor.touchDragged(touchX[0], touchY[0], 0); + else + processor.mouseMoved(touchX[0], touchY[0]); + } + } + + if (e.getType().equals("mouseup")) { + if (!touched[0]) + return; + this.pressedButtons.remove(getButton(e.getButton())); + this.touched[0] = pressedButtons.size() > 0; + if (isCursorCatched()) { + this.deltaX[0] = (int) getMovementXJSNI(e); + this.deltaY[0] = (int) getMovementYJSNI(e); + this.touchX[0] += getMovementXJSNI(e); + this.touchY[0] += getMovementYJSNI(e); + } else { + this.deltaX[0] = (int) getRelativeX(e, canvas) - touchX[0]; + this.deltaY[0] = (int) getRelativeY(e, canvas) - touchY[0]; + this.touchX[0] = (int) getRelativeX(e, canvas); + this.touchY[0] = (int) getRelativeY(e, canvas); + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + this.touched[0] = false; + if (processor != null) + processor.touchUp(touchX[0], touchY[0], 0, getButton(e.getButton())); + } + if (e.getType().equals(getMouseWheelEvent())) { + if (processor != null) { + processor.scrolled((int) getMouseWheelVelocity(e)); + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + e.preventDefault(); + } + if (e.getType().equals("keydown") && hasFocus) { + //System.out.println("keydown"); + int code = keyForCode(e.getKeyCode()); + if (code == 67) { + e.preventDefault(); + if (processor != null) { + processor.keyDown(code); + processor.keyTyped('\b'); + } + } else { + if (this.pressedKeys.add(code) && processor != null) { + processor.keyDown(code); + } + } + } + + if (e.getType().equals("keypress") && hasFocus) { + //System.out.println("keypress"); + char c = (char) e.getCharCode(); + if (processor != null) + processor.keyTyped(c); + } + + if (e.getType().equals("keyup") && hasFocus) { + //System.out.println("keyup"); + int code = keyForCode(e.getKeyCode()); + this.pressedKeys.remove(code); + if (processor != null) { + processor.keyUp(code); + } + } + + if (e.getType().equals("touchstart")) { + this.justTouched = true; + JsArray touches = e.getChangedTouches(); + for (int i = 0, j = touches.length(); i < j; i++) { + Touch touch = touches.get(i); + int touchId = touch.getIdentifier(); + touched[touchId] = true; + touchX[touchId] = touch.getRelativeX(canvas); + touchY[touchId] = touch.getRelativeY(canvas); + deltaX[touchId] = 0; + deltaY[touchId] = 0; + if (processor != null) { + processor.touchDown(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); + } + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + e.preventDefault(); + } + if (e.getType().equals("touchmove")) { + JsArray touches = e.getChangedTouches(); + for (int i = 0, j = touches.length(); i < j; i++) { + Touch touch = touches.get(i); + int touchId = touch.getIdentifier(); + deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; + deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; + touchX[touchId] = touch.getRelativeX(canvas); + touchY[touchId] = touch.getRelativeY(canvas); + if (processor != null) { + processor.touchDragged(touchX[touchId], touchY[touchId], touchId); + } + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + e.preventDefault(); + } + if (e.getType().equals("touchcancel")) { + JsArray touches = e.getChangedTouches(); + for (int i = 0, j = touches.length(); i < j; i++) { + Touch touch = touches.get(i); + int touchId = touch.getIdentifier(); + touched[touchId] = false; + deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; + deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; + touchX[touchId] = touch.getRelativeX(canvas); + touchY[touchId] = touch.getRelativeY(canvas); + if (processor != null) { + processor.touchUp(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); + } + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + e.preventDefault(); + } + if (e.getType().equals("touchend")) { + JsArray touches = e.getChangedTouches(); + for (int i = 0, j = touches.length(); i < j; i++) { + Touch touch = touches.get(i); + int touchId = touch.getIdentifier(); + touched[touchId] = false; + deltaX[touchId] = touch.getRelativeX(canvas) - touchX[touchId]; + deltaY[touchId] = touch.getRelativeY(canvas) - touchY[touchId]; + touchX[touchId] = touch.getRelativeX(canvas); + touchY[touchId] = touch.getRelativeY(canvas); + if (processor != null) { + processor.touchUp(touchX[touchId], touchY[touchId], touchId, Buttons.LEFT); + } + } + this.currentEventTimeStamp = TimeUtils.nanoTime(); + e.preventDefault(); + } + // if(hasFocus) e.preventDefault(); + } + + /** borrowed from PlayN, thanks guys **/ + private static int keyForCode(int keyCode) { + switch (keyCode) { + case KeyCodes.KEY_ALT: + return Keys.ALT_LEFT; + case KeyCodes.KEY_BACKSPACE: + return Keys.BACKSPACE; + case KeyCodes.KEY_CTRL: + return Keys.CONTROL_LEFT; + case KeyCodes.KEY_DELETE: + return Keys.DEL; + case KeyCodes.KEY_DOWN: + return Keys.DOWN; + case KeyCodes.KEY_END: + return Keys.END; + case KeyCodes.KEY_ENTER: + return Keys.ENTER; + case KeyCodes.KEY_ESCAPE: + return Keys.ESCAPE; + case KeyCodes.KEY_HOME: + return Keys.HOME; + case KeyCodes.KEY_LEFT: + return Keys.LEFT; + case KeyCodes.KEY_PAGEDOWN: + return Keys.PAGE_DOWN; + case KeyCodes.KEY_PAGEUP: + return Keys.PAGE_UP; + case KeyCodes.KEY_RIGHT: + return Keys.RIGHT; + case KeyCodes.KEY_SHIFT: + return Keys.SHIFT_LEFT; + case KeyCodes.KEY_TAB: + return Keys.TAB; + case KeyCodes.KEY_UP: + return Keys.UP; + + case KEY_PAUSE: + return Keys.UNKNOWN; // FIXME + case KEY_CAPS_LOCK: + return Keys.UNKNOWN; // FIXME + case KEY_SPACE: + return Keys.SPACE; + case KEY_INSERT: + return Keys.INSERT; + case KEY_0: + return Keys.NUM_0; + case KEY_1: + return Keys.NUM_1; + case KEY_2: + return Keys.NUM_2; + case KEY_3: + return Keys.NUM_3; + case KEY_4: + return Keys.NUM_4; + case KEY_5: + return Keys.NUM_5; + case KEY_6: + return Keys.NUM_6; + case KEY_7: + return Keys.NUM_7; + case KEY_8: + return Keys.NUM_8; + case KEY_9: + return Keys.NUM_9; + case KEY_A: + return Keys.A; + case KEY_B: + return Keys.B; + case KEY_C: + return Keys.C; + case KEY_D: + return Keys.D; + case KEY_E: + return Keys.E; + case KEY_F: + return Keys.F; + case KEY_G: + return Keys.G; + case KEY_H: + return Keys.H; + case KEY_I: + return Keys.I; + case KEY_J: + return Keys.J; + case KEY_K: + return Keys.K; + case KEY_L: + return Keys.L; + case KEY_M: + return Keys.M; + case KEY_N: + return Keys.N; + case KEY_O: + return Keys.O; + case KEY_P: + return Keys.P; + case KEY_Q: + return Keys.Q; + case KEY_R: + return Keys.R; + case KEY_S: + return Keys.S; + case KEY_T: + return Keys.T; + case KEY_U: + return Keys.U; + case KEY_V: + return Keys.V; + case KEY_W: + return Keys.W; + case KEY_X: + return Keys.X; + case KEY_Y: + return Keys.Y; + case KEY_Z: + return Keys.Z; + case KEY_LEFT_WINDOW_KEY: + return Keys.UNKNOWN; // FIXME + case KEY_RIGHT_WINDOW_KEY: + return Keys.UNKNOWN; // FIXME + // case KEY_SELECT_KEY: return Keys.SELECT_KEY; + case KEY_NUMPAD0: + return Keys.NUMPAD_0; + case KEY_NUMPAD1: + return Keys.NUMPAD_1; + case KEY_NUMPAD2: + return Keys.NUMPAD_2; + case KEY_NUMPAD3: + return Keys.NUMPAD_3; + case KEY_NUMPAD4: + return Keys.NUMPAD_4; + case KEY_NUMPAD5: + return Keys.NUMPAD_5; + case KEY_NUMPAD6: + return Keys.NUMPAD_6; + case KEY_NUMPAD7: + return Keys.NUMPAD_7; + case KEY_NUMPAD8: + return Keys.NUMPAD_8; + case KEY_NUMPAD9: + return Keys.NUMPAD_9; + case KEY_MULTIPLY: + return Keys.UNKNOWN; // FIXME + case KEY_ADD: + return Keys.PLUS; + case KEY_SUBTRACT: + return Keys.MINUS; + case KEY_DECIMAL_POINT_KEY: + return Keys.PERIOD; + case KEY_DIVIDE: + return Keys.UNKNOWN; // FIXME + case KEY_F1: + return Keys.F1; + case KEY_F2: + return Keys.F2; + case KEY_F3: + return Keys.F3; + case KEY_F4: + return Keys.F4; + case KEY_F5: + return Keys.F5; + case KEY_F6: + return Keys.F6; + case KEY_F7: + return Keys.F7; + case KEY_F8: + return Keys.F8; + case KEY_F9: + return Keys.F9; + case KEY_F10: + return Keys.F10; + case KEY_F11: + return Keys.F11; + case KEY_F12: + return Keys.F12; + case KEY_NUM_LOCK: + return Keys.NUM; + case KEY_SCROLL_LOCK: + return Keys.UNKNOWN; // FIXME + case KEY_SEMICOLON: + return Keys.SEMICOLON; + case KEY_EQUALS: + return Keys.EQUALS; + case KEY_COMMA: + return Keys.COMMA; + case KEY_DASH: + return Keys.MINUS; + case KEY_PERIOD: + return Keys.PERIOD; + case KEY_FORWARD_SLASH: + return Keys.SLASH; + case KEY_GRAVE_ACCENT: + return Keys.UNKNOWN; // FIXME + case KEY_OPEN_BRACKET: + return Keys.LEFT_BRACKET; + case KEY_BACKSLASH: + return Keys.BACKSLASH; + case KEY_CLOSE_BRACKET: + return Keys.RIGHT_BRACKET; + case KEY_SINGLE_QUOTE: + return Keys.APOSTROPHE; + default: + return Keys.UNKNOWN; + } + } + + // these are absent from KeyCodes; we know not why... + private static final int KEY_PAUSE = 19; + private static final int KEY_CAPS_LOCK = 20; + private static final int KEY_SPACE = 32; + private static final int KEY_INSERT = 45; + private static final int KEY_0 = 48; + private static final int KEY_1 = 49; + private static final int KEY_2 = 50; + private static final int KEY_3 = 51; + private static final int KEY_4 = 52; + private static final int KEY_5 = 53; + private static final int KEY_6 = 54; + private static final int KEY_7 = 55; + private static final int KEY_8 = 56; + private static final int KEY_9 = 57; + private static final int KEY_A = 65; + private static final int KEY_B = 66; + private static final int KEY_C = 67; + private static final int KEY_D = 68; + private static final int KEY_E = 69; + private static final int KEY_F = 70; + private static final int KEY_G = 71; + private static final int KEY_H = 72; + private static final int KEY_I = 73; + private static final int KEY_J = 74; + private static final int KEY_K = 75; + private static final int KEY_L = 76; + private static final int KEY_M = 77; + private static final int KEY_N = 78; + private static final int KEY_O = 79; + private static final int KEY_P = 80; + private static final int KEY_Q = 81; + private static final int KEY_R = 82; + private static final int KEY_S = 83; + private static final int KEY_T = 84; + private static final int KEY_U = 85; + private static final int KEY_V = 86; + private static final int KEY_W = 87; + private static final int KEY_X = 88; + private static final int KEY_Y = 89; + private static final int KEY_Z = 90; + private static final int KEY_LEFT_WINDOW_KEY = 91; + private static final int KEY_RIGHT_WINDOW_KEY = 92; + private static final int KEY_SELECT_KEY = 93; + private static final int KEY_NUMPAD0 = 96; + private static final int KEY_NUMPAD1 = 97; + private static final int KEY_NUMPAD2 = 98; + private static final int KEY_NUMPAD3 = 99; + private static final int KEY_NUMPAD4 = 100; + private static final int KEY_NUMPAD5 = 101; + private static final int KEY_NUMPAD6 = 102; + private static final int KEY_NUMPAD7 = 103; + private static final int KEY_NUMPAD8 = 104; + private static final int KEY_NUMPAD9 = 105; + private static final int KEY_MULTIPLY = 106; + private static final int KEY_ADD = 107; + private static final int KEY_SUBTRACT = 109; + private static final int KEY_DECIMAL_POINT_KEY = 110; + private static final int KEY_DIVIDE = 111; + private static final int KEY_F1 = 112; + private static final int KEY_F2 = 113; + private static final int KEY_F3 = 114; + private static final int KEY_F4 = 115; + private static final int KEY_F5 = 116; + private static final int KEY_F6 = 117; + private static final int KEY_F7 = 118; + private static final int KEY_F8 = 119; + private static final int KEY_F9 = 120; + private static final int KEY_F10 = 121; + private static final int KEY_F11 = 122; + private static final int KEY_F12 = 123; + private static final int KEY_NUM_LOCK = 144; + private static final int KEY_SCROLL_LOCK = 145; + private static final int KEY_SEMICOLON = 186; + private static final int KEY_EQUALS = 187; + private static final int KEY_COMMA = 188; + private static final int KEY_DASH = 189; + private static final int KEY_PERIOD = 190; + private static final int KEY_FORWARD_SLASH = 191; + private static final int KEY_GRAVE_ACCENT = 192; + private static final int KEY_OPEN_BRACKET = 219; + private static final int KEY_BACKSLASH = 220; + private static final int KEY_CLOSE_BRACKET = 221; + private static final int KEY_SINGLE_QUOTE = 222; + + @Override + public boolean isKeyJustPressed(int key) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isCatchBackKey() { + // TODO Auto-generated method stub + return false; + } +} diff --git a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java index e0563a7a..b594ae74 100644 --- a/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java +++ b/vtm-web/src/org/oscim/gdx/emu/com/badlogic/gdx/graphics/Pixmap.java @@ -1,377 +1,377 @@ -/******************************************************************************* - * Copyright 2011 See libgdx AUTHORS file. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package com.badlogic.gdx.graphics; - -import java.nio.Buffer; -import java.nio.IntBuffer; -import java.util.HashMap; -import java.util.Map; - -import com.badlogic.gdx.backends.gwt.GwtFileHandle; -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.utils.BufferUtils; -import com.badlogic.gdx.utils.Disposable; -import com.badlogic.gdx.utils.GdxRuntimeException; -import com.google.gwt.canvas.client.Canvas; -import com.google.gwt.canvas.dom.client.CanvasPixelArray; -import com.google.gwt.canvas.dom.client.Context2d; -import com.google.gwt.canvas.dom.client.Context2d.Composite; -import com.google.gwt.dom.client.CanvasElement; -import com.google.gwt.dom.client.ImageElement; - -public class Pixmap implements Disposable { - public static Map pixmaps = new HashMap(); - static int nextId = 0; - - /** Different pixel formats. - * - * @author mzechner */ - public enum Format { - Alpha, Intensity, LuminanceAlpha, RGB565, RGBA4444, RGB888, RGBA8888; - } - - /** Blending functions to be set with {@link Pixmap#setBlending}. - * @author mzechner */ - public enum Blending { - None, SourceOver - } - - /** Filters to be used with {@link Pixmap#drawPixmap(Pixmap, int, int, int, int, int, int, int, int)}. - * - * @author mzechner */ - public enum Filter { - NearestNeighbour, BiLinear - } - - int width; - int height; - Format format; - Canvas canvas; - Context2d context; - int id; - IntBuffer buffer; - int r = 255, g = 255, b = 255; - float a; - String color = make(r, g, b, a); - static Blending blending; - CanvasPixelArray pixels; - - public Context2d getContext(){ - return context; - } - - public Pixmap (FileHandle file) { - GwtFileHandle gwtFile = (GwtFileHandle)file; - ImageElement img = gwtFile.preloader.images.get(file.path()); - if (img == null) throw new GdxRuntimeException("Couldn't load image '" + file.path() + "', file does not exist"); - create(img.getWidth(), img.getHeight(), Format.RGBA8888); - context.setGlobalCompositeOperation(Composite.COPY); - context.drawImage(img, 0, 0); - context.setGlobalCompositeOperation(getComposite()); - } - - private static Composite getComposite () { - return blending == Blending.None ? Composite.COPY : Composite.SOURCE_OVER; - } - - public Pixmap (ImageElement img) { - create(img.getWidth(), img.getHeight(), Format.RGBA8888); - context.drawImage(img, 0, 0); - } - - public Pixmap (int width, int height, Format format) { - create(width, height, format); - } - - private void create (int width, int height, Format format2) { - this.width = width; - this.height = height; - this.format = Format.RGBA8888; - canvas = Canvas.createIfSupported(); - canvas.getCanvasElement().setWidth(width); - canvas.getCanvasElement().setHeight(height); - context = canvas.getContext2d(); - context.setGlobalCompositeOperation(getComposite()); - buffer = BufferUtils.newIntBuffer(1); - id = nextId++; - buffer.put(0, id); - pixmaps.put(id, this); - } - - public static String make (int r2, int g2, int b2, float a2) { - return "rgba(" + r2 + "," + g2 + "," + b2 + "," + a2 + ")"; - } - - /** Sets the type of {@link Blending} to be used for all operations. Default is {@link Blending#SourceOver}. - * @param blending the blending type */ - public static void setBlending (Blending blending) { - Pixmap.blending = blending; - Composite composite = getComposite(); - for (Pixmap pixmap : pixmaps.values()) { - pixmap.context.setGlobalCompositeOperation(composite); - } - } - - /** @return the currently set {@link Blending} */ - public static Blending getBlending () { - return blending; - } - - /** Sets the type of interpolation {@link Filter} to be used in conjunction with - * {@link Pixmap#drawPixmap(Pixmap, int, int, int, int, int, int, int, int)}. - * @param filter the filter. */ - public static void setFilter (Filter filter) { - } - - public Format getFormat () { - return format; - } - - public int getGLInternalFormat () { - return GL20.GL_RGBA; - } - - public int getGLFormat () { - return GL20.GL_RGBA; - } - - public int getGLType () { - return GL20.GL_UNSIGNED_BYTE; - } - - public int getWidth () { - return width; - } - - public int getHeight () { - return height; - } - - public Buffer getPixels () { - return buffer; - } - - @Override - public void dispose () { - pixmaps.remove(id); - } - - public CanvasElement getCanvasElement () { - return canvas.getCanvasElement(); - } - - /** Sets the color for the following drawing operations - * @param color the color, encoded as RGBA8888 */ - public void setColor (int color) { - r = (color >>> 24) & 0xff; - g = (color >>> 16) & 0xff; - b = (color >>> 8) & 0xff; - a = (color & 0xff) / 255f; - this.color = make(r, g, b, a); - context.setFillStyle(this.color); - context.setStrokeStyle(this.color); - } - - /** Sets the color for the following drawing operations. - * - * @param r The red component. - * @param g The green component. - * @param b The blue component. - * @param a The alpha component. */ - public void setColor (float r, float g, float b, float a) { - this.r = (int)(r * 255); - this.g = (int)(g * 255); - this.b = (int)(b * 255); - this.a = a; - color = make(this.r, this.g, this.b, this.a); - context.setFillStyle(color); - context.setStrokeStyle(this.color); - } - - /** Sets the color for the following drawing operations. - * @param color The color. */ - public void setColor (Color color) { - setColor(color.r, color.g, color.b, color.a); - } - - /** Fills the complete bitmap with the currently set color. */ - public void fill () { - context.fillRect(0, 0, getWidth(), getHeight()); - } - -// /** -// * Sets the width in pixels of strokes. -// * -// * @param width The stroke width in pixels. -// */ -// public void setStrokeWidth (int width); - - /** Draws a line between the given coordinates using the currently set color. - * - * @param x The x-coodinate of the first point - * @param y The y-coordinate of the first point - * @param x2 The x-coordinate of the first point - * @param y2 The y-coordinate of the first point */ - public void drawLine (int x, int y, int x2, int y2) { - context.beginPath(); - context.moveTo(x, y); - context.lineTo(x2, y2); - context.stroke(); - context.closePath(); - } - - /** Draws a rectangle outline starting at x, y extending by width to the right and by height downwards (y-axis points downwards) - * using the current color. - * - * @param x The x coordinate - * @param y The y coordinate - * @param width The width in pixels - * @param height The height in pixels */ - public void drawRectangle (int x, int y, int width, int height) { - context.beginPath(); - context.rect(x, y, width, height); - context.stroke(); - context.closePath(); - } - - /** Draws an area form another Pixmap to this Pixmap. - * - * @param pixmap The other Pixmap - * @param x The target x-coordinate (top left corner) - * @param y The target y-coordinate (top left corner) */ - public void drawPixmap (Pixmap pixmap, int x, int y) { - context.drawImage(pixmap.getCanvasElement(), x, y); - } - - /** Draws an area form another Pixmap to this Pixmap. - * - * @param pixmap The other Pixmap - * @param x The target x-coordinate (top left corner) - * @param y The target y-coordinate (top left corner) - * @param srcx The source x-coordinate (top left corner) - * @param srcy The source y-coordinate (top left corner); - * @param srcWidth The width of the area form the other Pixmap in pixels - * @param srcHeight The height of the area form the other Pixmap in pixles */ - public void drawPixmap (Pixmap pixmap, int x, int y, int srcx, int srcy, int srcWidth, int srcHeight) { - context.drawImage(pixmap.getCanvasElement(), srcx, srcy, srcWidth, srcHeight, x, y, srcWidth, srcHeight); - } - - /** Draws an area form another Pixmap to this Pixmap. This will automatically scale and stretch the source image to the - * specified target rectangle. Use {@link Pixmap#setFilter(Filter)} to specify the type of filtering to be used (nearest - * neighbour or bilinear). - * - * @param pixmap The other Pixmap - * @param srcx The source x-coordinate (top left corner) - * @param srcy The source y-coordinate (top left corner); - * @param srcWidth The width of the area form the other Pixmap in pixels - * @param srcHeight The height of the area form the other Pixmap in pixles - * @param dstx The target x-coordinate (top left corner) - * @param dsty The target y-coordinate (top left corner) - * @param dstWidth The target width - * @param dstHeight the target height */ - public void drawPixmap (Pixmap pixmap, int srcx, int srcy, int srcWidth, int srcHeight, int dstx, int dsty, int dstWidth, - int dstHeight) { - context.drawImage(pixmap.getCanvasElement(), srcx, srcy, srcWidth, srcHeight, dstx, dsty, dstWidth, dstHeight); - } - - /** Fills a rectangle starting at x, y extending by width to the right and by height downwards (y-axis points downwards) using - * the current color. - * - * @param x The x coordinate - * @param y The y coordinate - * @param width The width in pixels - * @param height The height in pixels */ - public void fillRectangle (int x, int y, int width, int height) { - context.fillRect(x, y, width, height); - } - - /** Draws a circle outline with the center at x,y and a radius using the current color and stroke width. - * - * @param x The x-coordinate of the center - * @param y The y-coordinate of the center - * @param radius The radius in pixels */ - public void drawCircle (int x, int y, int radius) { - context.beginPath(); - context.arc(x, y, radius, 0, 2 * Math.PI, false); - context.stroke(); - context.closePath(); - } - - /** Fills a circle with the center at x,y and a radius using the current color. - * - * @param x The x-coordinate of the center - * @param y The y-coordinate of the center - * @param radius The radius in pixels */ - public void fillCircle (int x, int y, int radius) { - context.beginPath(); - context.arc(x, y, radius, 0, 2 * Math.PI, false); - context.fill(); - context.closePath(); - } - - /** Fills a triangle with vertices at x1,y1 and x2,y2 and x3,y3 using the current color. - * - * @param x1 The x-coordinate of vertex 1 - * @param y1 The y-coordinate of vertex 1 - * @param x2 The x-coordinate of vertex 2 - * @param y2 The y-coordinate of vertex 2 - * @param x3 The x-coordinate of vertex 3 - * @param y3 The y-coordinate of vertex 3 */ - public void fillTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { - context.beginPath(); - context.moveTo(x1,y1); - context.lineTo(x2,y2); - context.lineTo(x3,y3); - context.lineTo(x1,y1); - context.fill(); - context.closePath(); - } - - /** Returns the 32-bit RGBA8888 value of the pixel at x, y. For Alpha formats the RGB components will be one. - * - * @param x The x-coordinate - * @param y The y-coordinate - * @return The pixel color in RGBA8888 format. */ - public int getPixel (int x, int y) { - if (pixels == null) pixels = context.getImageData(0, 0, width, height).getData(); - int i = x * 4 + y * width * 4; - int r = pixels.get(i + 0) & 0xff; - int g = pixels.get(i + 1) & 0xff; - int b = pixels.get(i + 2) & 0xff; - int a = pixels.get(i + 3) & 0xff; - return (r << 24) | (g << 16) | (b << 8) | (a); - } - - /** Draws a pixel at the given location with the current color. - * - * @param x the x-coordinate - * @param y the y-coordinate */ - public void drawPixel (int x, int y) { - context.fillRect(x, y, 1, 1); - } - - /** Draws a pixel at the given location with the given color. - * - * @param x the x-coordinate - * @param y the y-coordinate - * @param color the color in RGBA8888 format. */ - public void drawPixel (int x, int y, int color) { - setColor(color); - drawPixel(x, y); - } - -} +/******************************************************************************* + * Copyright 2011 See libgdx AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package com.badlogic.gdx.graphics; + +import java.nio.Buffer; +import java.nio.IntBuffer; +import java.util.HashMap; +import java.util.Map; + +import com.badlogic.gdx.backends.gwt.GwtFileHandle; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.BufferUtils; +import com.badlogic.gdx.utils.Disposable; +import com.badlogic.gdx.utils.GdxRuntimeException; +import com.google.gwt.canvas.client.Canvas; +import com.google.gwt.canvas.dom.client.CanvasPixelArray; +import com.google.gwt.canvas.dom.client.Context2d; +import com.google.gwt.canvas.dom.client.Context2d.Composite; +import com.google.gwt.dom.client.CanvasElement; +import com.google.gwt.dom.client.ImageElement; + +public class Pixmap implements Disposable { + public static Map pixmaps = new HashMap(); + static int nextId = 0; + + /** Different pixel formats. + * + * @author mzechner */ + public enum Format { + Alpha, Intensity, LuminanceAlpha, RGB565, RGBA4444, RGB888, RGBA8888; + } + + /** Blending functions to be set with {@link Pixmap#setBlending}. + * @author mzechner */ + public enum Blending { + None, SourceOver + } + + /** Filters to be used with {@link Pixmap#drawPixmap(Pixmap, int, int, int, int, int, int, int, int)}. + * + * @author mzechner */ + public enum Filter { + NearestNeighbour, BiLinear + } + + int width; + int height; + Format format; + Canvas canvas; + Context2d context; + int id; + IntBuffer buffer; + int r = 255, g = 255, b = 255; + float a; + String color = make(r, g, b, a); + static Blending blending; + CanvasPixelArray pixels; + + public Context2d getContext(){ + return context; + } + + public Pixmap (FileHandle file) { + GwtFileHandle gwtFile = (GwtFileHandle)file; + ImageElement img = gwtFile.preloader.images.get(file.path()); + if (img == null) throw new GdxRuntimeException("Couldn't load image '" + file.path() + "', file does not exist"); + create(img.getWidth(), img.getHeight(), Format.RGBA8888); + context.setGlobalCompositeOperation(Composite.COPY); + context.drawImage(img, 0, 0); + context.setGlobalCompositeOperation(getComposite()); + } + + private static Composite getComposite () { + return blending == Blending.None ? Composite.COPY : Composite.SOURCE_OVER; + } + + public Pixmap (ImageElement img) { + create(img.getWidth(), img.getHeight(), Format.RGBA8888); + context.drawImage(img, 0, 0); + } + + public Pixmap (int width, int height, Format format) { + create(width, height, format); + } + + private void create (int width, int height, Format format2) { + this.width = width; + this.height = height; + this.format = Format.RGBA8888; + canvas = Canvas.createIfSupported(); + canvas.getCanvasElement().setWidth(width); + canvas.getCanvasElement().setHeight(height); + context = canvas.getContext2d(); + context.setGlobalCompositeOperation(getComposite()); + buffer = BufferUtils.newIntBuffer(1); + id = nextId++; + buffer.put(0, id); + pixmaps.put(id, this); + } + + public static String make (int r2, int g2, int b2, float a2) { + return "rgba(" + r2 + "," + g2 + "," + b2 + "," + a2 + ")"; + } + + /** Sets the type of {@link Blending} to be used for all operations. Default is {@link Blending#SourceOver}. + * @param blending the blending type */ + public static void setBlending (Blending blending) { + Pixmap.blending = blending; + Composite composite = getComposite(); + for (Pixmap pixmap : pixmaps.values()) { + pixmap.context.setGlobalCompositeOperation(composite); + } + } + + /** @return the currently set {@link Blending} */ + public static Blending getBlending () { + return blending; + } + + /** Sets the type of interpolation {@link Filter} to be used in conjunction with + * {@link Pixmap#drawPixmap(Pixmap, int, int, int, int, int, int, int, int)}. + * @param filter the filter. */ + public static void setFilter (Filter filter) { + } + + public Format getFormat () { + return format; + } + + public int getGLInternalFormat () { + return GL20.GL_RGBA; + } + + public int getGLFormat () { + return GL20.GL_RGBA; + } + + public int getGLType () { + return GL20.GL_UNSIGNED_BYTE; + } + + public int getWidth () { + return width; + } + + public int getHeight () { + return height; + } + + public Buffer getPixels () { + return buffer; + } + + @Override + public void dispose () { + pixmaps.remove(id); + } + + public CanvasElement getCanvasElement () { + return canvas.getCanvasElement(); + } + + /** Sets the color for the following drawing operations + * @param color the color, encoded as RGBA8888 */ + public void setColor (int color) { + r = (color >>> 24) & 0xff; + g = (color >>> 16) & 0xff; + b = (color >>> 8) & 0xff; + a = (color & 0xff) / 255f; + this.color = make(r, g, b, a); + context.setFillStyle(this.color); + context.setStrokeStyle(this.color); + } + + /** Sets the color for the following drawing operations. + * + * @param r The red component. + * @param g The green component. + * @param b The blue component. + * @param a The alpha component. */ + public void setColor (float r, float g, float b, float a) { + this.r = (int)(r * 255); + this.g = (int)(g * 255); + this.b = (int)(b * 255); + this.a = a; + color = make(this.r, this.g, this.b, this.a); + context.setFillStyle(color); + context.setStrokeStyle(this.color); + } + + /** Sets the color for the following drawing operations. + * @param color The color. */ + public void setColor (Color color) { + setColor(color.r, color.g, color.b, color.a); + } + + /** Fills the complete bitmap with the currently set color. */ + public void fill () { + context.fillRect(0, 0, getWidth(), getHeight()); + } + +// /** +// * Sets the width in pixels of strokes. +// * +// * @param width The stroke width in pixels. +// */ +// public void setStrokeWidth (int width); + + /** Draws a line between the given coordinates using the currently set color. + * + * @param x The x-coodinate of the first point + * @param y The y-coordinate of the first point + * @param x2 The x-coordinate of the first point + * @param y2 The y-coordinate of the first point */ + public void drawLine (int x, int y, int x2, int y2) { + context.beginPath(); + context.moveTo(x, y); + context.lineTo(x2, y2); + context.stroke(); + context.closePath(); + } + + /** Draws a rectangle outline starting at x, y extending by width to the right and by height downwards (y-axis points downwards) + * using the current color. + * + * @param x The x coordinate + * @param y The y coordinate + * @param width The width in pixels + * @param height The height in pixels */ + public void drawRectangle (int x, int y, int width, int height) { + context.beginPath(); + context.rect(x, y, width, height); + context.stroke(); + context.closePath(); + } + + /** Draws an area form another Pixmap to this Pixmap. + * + * @param pixmap The other Pixmap + * @param x The target x-coordinate (top left corner) + * @param y The target y-coordinate (top left corner) */ + public void drawPixmap (Pixmap pixmap, int x, int y) { + context.drawImage(pixmap.getCanvasElement(), x, y); + } + + /** Draws an area form another Pixmap to this Pixmap. + * + * @param pixmap The other Pixmap + * @param x The target x-coordinate (top left corner) + * @param y The target y-coordinate (top left corner) + * @param srcx The source x-coordinate (top left corner) + * @param srcy The source y-coordinate (top left corner); + * @param srcWidth The width of the area form the other Pixmap in pixels + * @param srcHeight The height of the area form the other Pixmap in pixles */ + public void drawPixmap (Pixmap pixmap, int x, int y, int srcx, int srcy, int srcWidth, int srcHeight) { + context.drawImage(pixmap.getCanvasElement(), srcx, srcy, srcWidth, srcHeight, x, y, srcWidth, srcHeight); + } + + /** Draws an area form another Pixmap to this Pixmap. This will automatically scale and stretch the source image to the + * specified target rectangle. Use {@link Pixmap#setFilter(Filter)} to specify the type of filtering to be used (nearest + * neighbour or bilinear). + * + * @param pixmap The other Pixmap + * @param srcx The source x-coordinate (top left corner) + * @param srcy The source y-coordinate (top left corner); + * @param srcWidth The width of the area form the other Pixmap in pixels + * @param srcHeight The height of the area form the other Pixmap in pixles + * @param dstx The target x-coordinate (top left corner) + * @param dsty The target y-coordinate (top left corner) + * @param dstWidth The target width + * @param dstHeight the target height */ + public void drawPixmap (Pixmap pixmap, int srcx, int srcy, int srcWidth, int srcHeight, int dstx, int dsty, int dstWidth, + int dstHeight) { + context.drawImage(pixmap.getCanvasElement(), srcx, srcy, srcWidth, srcHeight, dstx, dsty, dstWidth, dstHeight); + } + + /** Fills a rectangle starting at x, y extending by width to the right and by height downwards (y-axis points downwards) using + * the current color. + * + * @param x The x coordinate + * @param y The y coordinate + * @param width The width in pixels + * @param height The height in pixels */ + public void fillRectangle (int x, int y, int width, int height) { + context.fillRect(x, y, width, height); + } + + /** Draws a circle outline with the center at x,y and a radius using the current color and stroke width. + * + * @param x The x-coordinate of the center + * @param y The y-coordinate of the center + * @param radius The radius in pixels */ + public void drawCircle (int x, int y, int radius) { + context.beginPath(); + context.arc(x, y, radius, 0, 2 * Math.PI, false); + context.stroke(); + context.closePath(); + } + + /** Fills a circle with the center at x,y and a radius using the current color. + * + * @param x The x-coordinate of the center + * @param y The y-coordinate of the center + * @param radius The radius in pixels */ + public void fillCircle (int x, int y, int radius) { + context.beginPath(); + context.arc(x, y, radius, 0, 2 * Math.PI, false); + context.fill(); + context.closePath(); + } + + /** Fills a triangle with vertices at x1,y1 and x2,y2 and x3,y3 using the current color. + * + * @param x1 The x-coordinate of vertex 1 + * @param y1 The y-coordinate of vertex 1 + * @param x2 The x-coordinate of vertex 2 + * @param y2 The y-coordinate of vertex 2 + * @param x3 The x-coordinate of vertex 3 + * @param y3 The y-coordinate of vertex 3 */ + public void fillTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { + context.beginPath(); + context.moveTo(x1,y1); + context.lineTo(x2,y2); + context.lineTo(x3,y3); + context.lineTo(x1,y1); + context.fill(); + context.closePath(); + } + + /** Returns the 32-bit RGBA8888 value of the pixel at x, y. For Alpha formats the RGB components will be one. + * + * @param x The x-coordinate + * @param y The y-coordinate + * @return The pixel color in RGBA8888 format. */ + public int getPixel (int x, int y) { + if (pixels == null) pixels = context.getImageData(0, 0, width, height).getData(); + int i = x * 4 + y * width * 4; + int r = pixels.get(i + 0) & 0xff; + int g = pixels.get(i + 1) & 0xff; + int b = pixels.get(i + 2) & 0xff; + int a = pixels.get(i + 3) & 0xff; + return (r << 24) | (g << 16) | (b << 8) | (a); + } + + /** Draws a pixel at the given location with the current color. + * + * @param x the x-coordinate + * @param y the y-coordinate */ + public void drawPixel (int x, int y) { + context.fillRect(x, y, 1, 1); + } + + /** Draws a pixel at the given location with the given color. + * + * @param x the x-coordinate + * @param y the y-coordinate + * @param color the color in RGBA8888 format. */ + public void drawPixel (int x, int y, int color) { + setColor(color); + drawPixel(x, y); + } + +} diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/geojson/GeoJsonTileSource.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/geojson/GeoJsonTileSource.java index 934f8dc3..c0cfd4a2 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/geojson/GeoJsonTileSource.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/geojson/GeoJsonTileSource.java @@ -1,62 +1,62 @@ -/* - * Copyright 2014 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.tiling.source.geojson; - -import java.util.Map; - -import org.oscim.core.MapElement; -import org.oscim.core.Tag; -import org.oscim.tiling.ITileDataSource; -import org.oscim.tiling.source.JsonTileDataSource; -import org.oscim.tiling.source.UrlTileSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class GeoJsonTileSource extends UrlTileSource { - static final Logger log = LoggerFactory.getLogger(GeoJsonTileSource.class); - - public GeoJsonTileSource(String url) { - super(url, "/{Z}/{X}/{Y}.json"); - } - - @Override - public ITileDataSource getDataSource() { - return new JsonTileDataSource(this); - } - - public Tag getFeatureTag() { - return null; - } - - /** allow overriding tag handling */ - public abstract void decodeTags(MapElement mapElement, Map properties); - - public Tag rewriteTag(String key, Object value) { - - if (value == null) - return null; - - String val = (value instanceof String) ? (String) value : String.valueOf(value); - - return new Tag(key, val); - } - - /** modify mapElement before process() */ - public void postGeomHook(MapElement mapElement) { - - } -} +/* + * Copyright 2014 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.tiling.source.geojson; + +import java.util.Map; + +import org.oscim.core.MapElement; +import org.oscim.core.Tag; +import org.oscim.tiling.ITileDataSource; +import org.oscim.tiling.source.JsonTileDataSource; +import org.oscim.tiling.source.UrlTileSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class GeoJsonTileSource extends UrlTileSource { + static final Logger log = LoggerFactory.getLogger(GeoJsonTileSource.class); + + public GeoJsonTileSource(String url) { + super(url, "/{Z}/{X}/{Y}.json"); + } + + @Override + public ITileDataSource getDataSource() { + return new JsonTileDataSource(this); + } + + public Tag getFeatureTag() { + return null; + } + + /** allow overriding tag handling */ + public abstract void decodeTags(MapElement mapElement, Map properties); + + public Tag rewriteTag(String key, Object value) { + + if (value == null) + return null; + + String val = (value instanceof String) ? (String) value : String.valueOf(value); + + return new Tag(key, val); + } + + /** modify mapElement before process() */ + public void postGeomHook(MapElement mapElement) { + + } +} diff --git a/vtm/src/org/oscim/backend/GL.java b/vtm/src/org/oscim/backend/GL.java index 9249d48b..8d1dcef5 100644 --- a/vtm/src/org/oscim/backend/GL.java +++ b/vtm/src/org/oscim/backend/GL.java @@ -1,672 +1,672 @@ -/* - * Copyright 2013 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -/******************************************************************************* - * Copyright 2011 See libgdx AUTHORS file. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package org.oscim.backend; - -import java.nio.Buffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; - -/** - * Interface wrapping all the methods of OpenGL ES 2.0 - * - * @author mzechner - */ -public interface GL { - public static final int ES_VERSION_2_0 = 1; - public static final int DEPTH_BUFFER_BIT = 0x00000100; - public static final int STENCIL_BUFFER_BIT = 0x00000400; - public static final int COLOR_BUFFER_BIT = 0x00004000; - public static final int FALSE = 0; - public static final int TRUE = 1; - public static final int POINTS = 0x0000; - public static final int LINES = 0x0001; - public static final int LINE_LOOP = 0x0002; - public static final int LINE_STRIP = 0x0003; - public static final int TRIANGLES = 0x0004; - public static final int TRIANGLE_STRIP = 0x0005; - public static final int TRIANGLE_FAN = 0x0006; - public static final int ZERO = 0; - public static final int ONE = 1; - public static final int SRC_COLOR = 0x0300; - public static final int ONE_MINUS_SRC_COLOR = 0x0301; - public static final int SRC_ALPHA = 0x0302; - public static final int ONE_MINUS_SRC_ALPHA = 0x0303; - public static final int DST_ALPHA = 0x0304; - public static final int ONE_MINUS_DST_ALPHA = 0x0305; - public static final int DST_COLOR = 0x0306; - public static final int ONE_MINUS_DST_COLOR = 0x0307; - public static final int SRC_ALPHA_SATURATE = 0x0308; - public static final int FUNC_ADD = 0x8006; - public static final int BLEND_EQUATION = 0x8009; - public static final int BLEND_EQUATION_RGB = 0x8009; - public static final int BLEND_EQUATION_ALPHA = 0x883D; - public static final int FUNC_SUBTRACT = 0x800A; - public static final int FUNC_REVERSE_SUBTRACT = 0x800B; - public static final int BLEND_DST_RGB = 0x80C8; - public static final int BLEND_SRC_RGB = 0x80C9; - public static final int BLEND_DST_ALPHA = 0x80CA; - public static final int BLEND_SRC_ALPHA = 0x80CB; - public static final int CONSTANT_COLOR = 0x8001; - public static final int ONE_MINUS_CONSTANT_COLOR = 0x8002; - public static final int CONSTANT_ALPHA = 0x8003; - public static final int ONE_MINUS_CONSTANT_ALPHA = 0x8004; - public static final int BLEND_COLOR = 0x8005; - public static final int ARRAY_BUFFER = 0x8892; - public static final int ELEMENT_ARRAY_BUFFER = 0x8893; - public static final int ARRAY_BUFFER_BINDING = 0x8894; - public static final int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; - public static final int STREAM_DRAW = 0x88E0; - public static final int STATIC_DRAW = 0x88E4; - public static final int DYNAMIC_DRAW = 0x88E8; - public static final int BUFFER_SIZE = 0x8764; - public static final int BUFFER_USAGE = 0x8765; - public static final int CURRENT_VERTEX_ATTRIB = 0x8626; - public static final int FRONT = 0x0404; - public static final int BACK = 0x0405; - public static final int FRONT_AND_BACK = 0x0408; - public static final int TEXTURE_2D = 0x0DE1; - public static final int CULL_FACE = 0x0B44; - public static final int BLEND = 0x0BE2; - public static final int DITHER = 0x0BD0; - public static final int STENCIL_TEST = 0x0B90; - public static final int DEPTH_TEST = 0x0B71; - public static final int SCISSOR_TEST = 0x0C11; - public static final int POLYGON_OFFSET_FILL = 0x8037; - public static final int SAMPLE_ALPHA_TO_COVERAGE = 0x809E; - public static final int SAMPLE_COVERAGE = 0x80A0; - //public static final int NO_ERROR = 0; - public static final int INVALID_ENUM = 0x0500; - public static final int INVALID_VALUE = 0x0501; - public static final int INVALID_OPERATION = 0x0502; - public static final int OUT_OF_MEMORY = 0x0505; - public static final int CW = 0x0900; - public static final int CCW = 0x0901; - public static final int LINE_WIDTH = 0x0B21; - public static final int ALIASED_POINT_SIZE_RANGE = 0x846D; - public static final int ALIASED_LINE_WIDTH_RANGE = 0x846E; - public static final int CULL_FACE_MODE = 0x0B45; - public static final int FRONT_FACE = 0x0B46; - public static final int DEPTH_RANGE = 0x0B70; - public static final int DEPTH_WRITEMASK = 0x0B72; - public static final int DEPTH_CLEAR_VALUE = 0x0B73; - public static final int DEPTH_FUNC = 0x0B74; - public static final int STENCIL_CLEAR_VALUE = 0x0B91; - public static final int STENCIL_FUNC = 0x0B92; - public static final int STENCIL_FAIL = 0x0B94; - public static final int STENCIL_PASS_DEPTH_FAIL = 0x0B95; - public static final int STENCIL_PASS_DEPTH_PASS = 0x0B96; - public static final int STENCIL_REF = 0x0B97; - public static final int STENCIL_VALUE_MASK = 0x0B93; - public static final int STENCIL_WRITEMASK = 0x0B98; - public static final int STENCIL_BACK_FUNC = 0x8800; - public static final int STENCIL_BACK_FAIL = 0x8801; - public static final int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; - public static final int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; - public static final int STENCIL_BACK_REF = 0x8CA3; - public static final int STENCIL_BACK_VALUE_MASK = 0x8CA4; - public static final int STENCIL_BACK_WRITEMASK = 0x8CA5; - public static final int VIEWPORT = 0x0BA2; - public static final int SCISSOR_BOX = 0x0C10; - public static final int COLOR_CLEAR_VALUE = 0x0C22; - public static final int COLOR_WRITEMASK = 0x0C23; - public static final int UNPACK_ALIGNMENT = 0x0CF5; - public static final int PACK_ALIGNMENT = 0x0D05; - public static final int MAX_TEXTURE_SIZE = 0x0D33; - public static final int MAX_TEXTURE_UNITS = 0x84E2; - public static final int MAX_VIEWPORT_DIMS = 0x0D3A; - public static final int SUBPIXEL_BITS = 0x0D50; - public static final int RED_BITS = 0x0D52; - public static final int GREEN_BITS = 0x0D53; - public static final int BLUE_BITS = 0x0D54; - public static final int ALPHA_BITS = 0x0D55; - public static final int DEPTH_BITS = 0x0D56; - public static final int STENCIL_BITS = 0x0D57; - public static final int POLYGON_OFFSET_UNITS = 0x2A00; - public static final int POLYGON_OFFSET_FACTOR = 0x8038; - public static final int TEXTURE_BINDING_2D = 0x8069; - public static final int SAMPLE_BUFFERS = 0x80A8; - public static final int SAMPLES = 0x80A9; - public static final int SAMPLE_COVERAGE_VALUE = 0x80AA; - public static final int SAMPLE_COVERAGE_INVERT = 0x80AB; - public static final int NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; - public static final int COMPRESSED_TEXTURE_FORMATS = 0x86A3; - public static final int DONT_CARE = 0x1100; - public static final int FASTEST = 0x1101; - public static final int NICEST = 0x1102; - public static final int GENERATE_MIPMAP_HINT = 0x8192; - public static final int BYTE = 0x1400; - public static final int UNSIGNED_BYTE = 0x1401; - public static final int SHORT = 0x1402; - public static final int UNSIGNED_SHORT = 0x1403; - public static final int INT = 0x1404; - public static final int UNSIGNED_INT = 0x1405; - public static final int FLOAT = 0x1406; - public static final int FIXED = 0x140C; - public static final int DEPTH_COMPONENT = 0x1902; - public static final int ALPHA = 0x1906; - public static final int RGB = 0x1907; - public static final int RGBA = 0x1908; - public static final int LUMINANCE = 0x1909; - public static final int LUMINANCE_ALPHA = 0x190A; - public static final int UNSIGNED_SHORT_4_4_4_4 = 0x8033; - public static final int UNSIGNED_SHORT_5_5_5_1 = 0x8034; - public static final int UNSIGNED_SHORT_5_6_5 = 0x8363; - public static final int FRAGMENT_SHADER = 0x8B30; - public static final int VERTEX_SHADER = 0x8B31; - public static final int MAX_VERTEX_ATTRIBS = 0x8869; - public static final int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; - public static final int MAX_VARYING_VECTORS = 0x8DFC; - public static final int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; - public static final int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; - public static final int MAX_TEXTURE_IMAGE_UNITS = 0x8872; - public static final int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; - public static final int SHADER_TYPE = 0x8B4F; - public static final int DELETE_STATUS = 0x8B80; - public static final int LINK_STATUS = 0x8B82; - public static final int VALIDATE_STATUS = 0x8B83; - public static final int ATTACHED_SHADERS = 0x8B85; - public static final int ACTIVE_UNIFORMS = 0x8B86; - public static final int ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; - public static final int ACTIVE_ATTRIBUTES = 0x8B89; - public static final int ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; - public static final int SHADING_LANGUAGE_VERSION = 0x8B8C; - public static final int CURRENT_PROGRAM = 0x8B8D; - public static final int NEVER = 0x0200; - public static final int LESS = 0x0201; - public static final int EQUAL = 0x0202; - public static final int LEQUAL = 0x0203; - public static final int GREATER = 0x0204; - public static final int NOTEQUAL = 0x0205; - public static final int GEQUAL = 0x0206; - public static final int ALWAYS = 0x0207; - public static final int KEEP = 0x1E00; - public static final int REPLACE = 0x1E01; - public static final int INCR = 0x1E02; - public static final int DECR = 0x1E03; - public static final int INVERT = 0x150A; - public static final int INCR_WRAP = 0x8507; - public static final int DECR_WRAP = 0x8508; - public static final int VENDOR = 0x1F00; - public static final int RENDERER = 0x1F01; - public static final int VERSION = 0x1F02; - public static final int EXTENSIONS = 0x1F03; - public static final int NEAREST = 0x2600; - public static final int LINEAR = 0x2601; - public static final int NEAREST_MIPMAP_NEAREST = 0x2700; - public static final int LINEAR_MIPMAP_NEAREST = 0x2701; - public static final int NEAREST_MIPMAP_LINEAR = 0x2702; - public static final int LINEAR_MIPMAP_LINEAR = 0x2703; - public static final int TEXTURE_MAG_FILTER = 0x2800; - public static final int TEXTURE_MIN_FILTER = 0x2801; - public static final int TEXTURE_WRAP_S = 0x2802; - public static final int TEXTURE_WRAP_T = 0x2803; - public static final int TEXTURE = 0x1702; - public static final int TEXTURE_CUBE_MAP = 0x8513; - public static final int TEXTURE_BINDING_CUBE_MAP = 0x8514; - public static final int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; - public static final int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; - public static final int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; - public static final int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; - public static final int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; - public static final int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; - public static final int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; - public static final int TEXTURE0 = 0x84C0; - public static final int TEXTURE1 = 0x84C1; - public static final int TEXTURE2 = 0x84C2; - public static final int TEXTURE3 = 0x84C3; - public static final int TEXTURE4 = 0x84C4; - public static final int TEXTURE5 = 0x84C5; - public static final int TEXTURE6 = 0x84C6; - public static final int TEXTURE7 = 0x84C7; - public static final int TEXTURE8 = 0x84C8; - public static final int TEXTURE9 = 0x84C9; - public static final int TEXTURE10 = 0x84CA; - public static final int TEXTURE11 = 0x84CB; - public static final int TEXTURE12 = 0x84CC; - public static final int TEXTURE13 = 0x84CD; - public static final int TEXTURE14 = 0x84CE; - public static final int TEXTURE15 = 0x84CF; - public static final int TEXTURE16 = 0x84D0; - public static final int TEXTURE17 = 0x84D1; - public static final int TEXTURE18 = 0x84D2; - public static final int TEXTURE19 = 0x84D3; - public static final int TEXTURE20 = 0x84D4; - public static final int TEXTURE21 = 0x84D5; - public static final int TEXTURE22 = 0x84D6; - public static final int TEXTURE23 = 0x84D7; - public static final int TEXTURE24 = 0x84D8; - public static final int TEXTURE25 = 0x84D9; - public static final int TEXTURE26 = 0x84DA; - public static final int TEXTURE27 = 0x84DB; - public static final int TEXTURE28 = 0x84DC; - public static final int TEXTURE29 = 0x84DD; - public static final int TEXTURE30 = 0x84DE; - public static final int TEXTURE31 = 0x84DF; - public static final int ACTIVE_TEXTURE = 0x84E0; - public static final int REPEAT = 0x2901; - public static final int CLAMP_TO_EDGE = 0x812F; - public static final int MIRRORED_REPEAT = 0x8370; - public static final int FLOAT_VEC2 = 0x8B50; - public static final int FLOAT_VEC3 = 0x8B51; - public static final int FLOAT_VEC4 = 0x8B52; - public static final int INT_VEC2 = 0x8B53; - public static final int INT_VEC3 = 0x8B54; - public static final int INT_VEC4 = 0x8B55; - public static final int BOOL = 0x8B56; - public static final int BOOL_VEC2 = 0x8B57; - public static final int BOOL_VEC3 = 0x8B58; - public static final int BOOL_VEC4 = 0x8B59; - public static final int FLOAT_MAT2 = 0x8B5A; - public static final int FLOAT_MAT3 = 0x8B5B; - public static final int FLOAT_MAT4 = 0x8B5C; - public static final int SAMPLER_2D = 0x8B5E; - public static final int SAMPLER_CUBE = 0x8B60; - public static final int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; - public static final int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; - public static final int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; - public static final int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; - public static final int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; - public static final int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; - public static final int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; - public static final int IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; - public static final int IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; - public static final int COMPILE_STATUS = 0x8B81; - public static final int INFO_LOG_LENGTH = 0x8B84; - public static final int SHADER_SOURCE_LENGTH = 0x8B88; - public static final int SHADER_COMPILER = 0x8DFA; - public static final int SHADER_BINARY_FORMATS = 0x8DF8; - public static final int NUM_SHADER_BINARY_FORMATS = 0x8DF9; - public static final int LOW_FLOAT = 0x8DF0; - public static final int MEDIUM_FLOAT = 0x8DF1; - public static final int HIGH_FLOAT = 0x8DF2; - public static final int LOW_INT = 0x8DF3; - public static final int MEDIUM_INT = 0x8DF4; - public static final int HIGH_INT = 0x8DF5; - public static final int FRAMEBUFFER = 0x8D40; - public static final int RENDERBUFFER = 0x8D41; - public static final int RGBA4 = 0x8056; - public static final int RGB5_A1 = 0x8057; - public static final int RGB565 = 0x8D62; - public static final int DEPTH_COMPONENT16 = 0x81A5; - public static final int STENCIL_INDEX = 0x1901; - public static final int STENCIL_INDEX8 = 0x8D48; - public static final int RENDERBUFFER_WIDTH = 0x8D42; - public static final int RENDERBUFFER_HEIGHT = 0x8D43; - public static final int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; - public static final int RENDERBUFFER_RED_SIZE = 0x8D50; - public static final int RENDERBUFFER_GREEN_SIZE = 0x8D51; - public static final int RENDERBUFFER_BLUE_SIZE = 0x8D52; - public static final int RENDERBUFFER_ALPHA_SIZE = 0x8D53; - public static final int RENDERBUFFER_DEPTH_SIZE = 0x8D54; - public static final int RENDERBUFFER_STENCIL_SIZE = 0x8D55; - public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; - public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; - public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; - public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; - public static final int COLOR_ATTACHMENT0 = 0x8CE0; - public static final int DEPTH_ATTACHMENT = 0x8D00; - public static final int STENCIL_ATTACHMENT = 0x8D20; - public static final int NONE = 0; - public static final int FRAMEBUFFER_COMPLETE = 0x8CD5; - public static final int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; - public static final int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; - public static final int FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9; - public static final int FRAMEBUFFER_UNSUPPORTED = 0x8CDD; - public static final int FRAMEBUFFER_BINDING = 0x8CA6; - public static final int RENDERBUFFER_BINDING = 0x8CA7; - public static final int MAX_RENDERBUFFER_SIZE = 0x84E8; - public static final int INVALID_FRAMEBUFFER_OPERATION = 0x0506; - public static final int VERTEX_PROGRAM_POINT_SIZE = 0x8642; - - // Extensions - public static final int COVERAGE_BUFFER_BIT_NV = 0x8000; - - public void attachShader(int program, int shader); - - public void bindAttribLocation(int program, int index, String name); - - public void bindBuffer(int target, int buffer); - - public void bindFramebuffer(int target, int framebuffer); - - public void bindRenderbuffer(int target, int renderbuffer); - - public void blendColor(float red, float green, float blue, float alpha); - - public void blendEquation(int mode); - - public void blendEquationSeparate(int modeRGB, int modeAlpha); - - public void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha); - - public void bufferData(int target, int size, Buffer data, int usage); - - public void bufferSubData(int target, int offset, int size, Buffer data); - - public int checkFramebufferStatus(int target); - - public void compileShader(int shader); - - public int createProgram(); - - public int createShader(int type); - - public void deleteBuffers(int n, IntBuffer buffers); - - public void deleteFramebuffers(int n, IntBuffer framebuffers); - - public void deleteProgram(int program); - - public void deleteRenderbuffers(int n, IntBuffer renderbuffers); - - public void deleteShader(int shader); - - public void detachShader(int program, int shader); - - public void disableVertexAttribArray(int index); - - public void drawElements(int mode, int count, int type, int offset); - - public void enableVertexAttribArray(int index); - - public void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, - int renderbuffer); - - public void framebufferTexture2D(int target, int attachment, int textarget, int texture, - int level); - - public void genBuffers(int n, IntBuffer buffers); - - public void generateMipmap(int target); - - public void genFramebuffers(int n, IntBuffer framebuffers); - - public void genRenderbuffers(int n, IntBuffer renderbuffers); - - // deviates - public String getActiveAttrib(int program, int index, IntBuffer size, Buffer type); - - // deviates - public String getActiveUniform(int program, int index, IntBuffer size, Buffer type); - - public void getAttachedShaders(int program, int maxcount, Buffer count, IntBuffer shaders); - - public int getAttribLocation(int program, String name); - - public void getBooleanv(int pname, Buffer params); - - public void getBufferParameteriv(int target, int pname, IntBuffer params); - - public void getFloatv(int pname, FloatBuffer params); - - public void getFramebufferAttachmentParameteriv(int target, int attachment, int pname, - IntBuffer params); - - public void getProgramiv(int program, int pname, IntBuffer params); - - // deviates - public String getProgramInfoLog(int program); - - public void getRenderbufferParameteriv(int target, int pname, IntBuffer params); - - public void getShaderiv(int shader, int pname, IntBuffer params); - - // deviates - public String getShaderInfoLog(int shader); - - public void getShaderPrecisionFormat(int shadertype, int precisiontype, IntBuffer range, - IntBuffer precision); - - public void getShaderSource(int shader, int bufsize, Buffer length, String source); - - public void getTexParameterfv(int target, int pname, FloatBuffer params); - - public void getTexParameteriv(int target, int pname, IntBuffer params); - - public void getUniformfv(int program, int location, FloatBuffer params); - - public void getUniformiv(int program, int location, IntBuffer params); - - public int getUniformLocation(int program, String name); - - public void getVertexAttribfv(int index, int pname, FloatBuffer params); - - public void getVertexAttribiv(int index, int pname, IntBuffer params); - - public void getVertexAttribPointerv(int index, int pname, Buffer pointer); - - public boolean isBuffer(int buffer); - - public boolean isEnabled(int cap); - - public boolean isFramebuffer(int framebuffer); - - public boolean isProgram(int program); - - public boolean isRenderbuffer(int renderbuffer); - - public boolean isShader(int shader); - - public boolean isTexture(int texture); - - public void linkProgram(int program); - - public void releaseShaderCompiler(); - - public void renderbufferStorage(int target, int internalformat, int width, int height); - - public void sampleCoverage(float value, boolean invert); - - public void shaderBinary(int n, IntBuffer shaders, int binaryformat, Buffer binary, int length); - - // Deviates - public void shaderSource(int shader, String string); - - public void stencilFuncSeparate(int face, int func, int ref, int mask); - - public void stencilMaskSeparate(int face, int mask); - - public void stencilOpSeparate(int face, int fail, int zfail, int zpass); - - public void texParameterfv(int target, int pname, FloatBuffer params); - - public void texParameteri(int target, int pname, int param); - - public void texParameteriv(int target, int pname, IntBuffer params); - - public void uniform1f(int location, float x); - - public void uniform1fv(int location, int count, FloatBuffer v); - - public void uniform1i(int location, int x); - - public void uniform1iv(int location, int count, IntBuffer v); - - public void uniform2f(int location, float x, float y); - - public void uniform2fv(int location, int count, FloatBuffer v); - - public void uniform2i(int location, int x, int y); - - public void uniform2iv(int location, int count, IntBuffer v); - - public void uniform3f(int location, float x, float y, float z); - - public void uniform3fv(int location, int count, FloatBuffer v); - - public void uniform3i(int location, int x, int y, int z); - - public void uniform3iv(int location, int count, IntBuffer v); - - public void uniform4f(int location, float x, float y, float z, float w); - - public void uniform4fv(int location, int count, FloatBuffer v); - - public void uniform4i(int location, int x, int y, int z, int w); - - public void uniform4iv(int location, int count, IntBuffer v); - - public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value); - - public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value); - - public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value); - - public void useProgram(int program); - - public void validateProgram(int program); - - public void vertexAttrib1f(int indx, float x); - - public void vertexAttrib1fv(int indx, FloatBuffer values); - - public void vertexAttrib2f(int indx, float x, float y); - - public void vertexAttrib2fv(int indx, FloatBuffer values); - - public void vertexAttrib3f(int indx, float x, float y, float z); - - public void vertexAttrib3fv(int indx, FloatBuffer values); - - public void vertexAttrib4f(int indx, float x, float y, float z, float w); - - public void vertexAttrib4fv(int indx, FloatBuffer values); - - public void vertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, - Buffer ptr); - - /** - * - */ - public void vertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, - int offset); - - //------------------------ - - public static final int GENERATE_MIPMAP = 0x8191; - public static final int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; - public static final int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; - - public void activeTexture(int texture); - - public void bindTexture(int target, int texture); - - public void blendFunc(int sfactor, int dfactor); - - public void clear(int mask); - - public void clearColor(float red, float green, float blue, float alpha); - - public void clearDepthf(float depth); - - public void clearStencil(int s); - - public void colorMask(boolean red, boolean green, boolean blue, boolean alpha); - - public void compressedTexImage2D(int target, int level, int internalformat, int width, - int height, int border, - int imageSize, Buffer data); - - public void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, - int width, int height, int format, - int imageSize, Buffer data); - - public void copyTexImage2D(int target, int level, int internalformat, int x, int y, - int width, int height, int border); - - public void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, - int width, int height); - - public void cullFace(int mode); - - public void deleteTextures(int n, IntBuffer textures); - - public void depthFunc(int func); - - public void depthMask(boolean flag); - - public void depthRangef(float zNear, float zFar); - - public void disable(int cap); - - public void drawArrays(int mode, int first, int count); - - public void drawElements(int mode, int count, int type, Buffer indices); - - public void enable(int cap); - - public void finish(); - - public void flush(); - - public void frontFace(int mode); - - public void genTextures(int n, IntBuffer textures); - - public int getError(); - - public void getIntegerv(int pname, IntBuffer params); - - public String getString(int name); - - public void hint(int target, int mode); - - public void lineWidth(float width); - - public void pixelStorei(int pname, int param); - - public void polygonOffset(float factor, float units); - - public void readPixels(int x, int y, int width, int height, int format, int type, - Buffer pixels); - - public void scissor(int x, int y, int width, int height); - - public void stencilFunc(int func, int ref, int mask); - - public void stencilMask(int mask); - - public void stencilOp(int fail, int zfail, int zpass); - - public void texImage2D(int target, int level, int internalformat, int width, int height, - int border, int format, int type, - Buffer pixels); - - public void texParameterf(int target, int pname, float param); - - public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width, - int height, int format, int type, - Buffer pixels); - - public void viewport(int x, int y, int width, int height); -} +/* + * Copyright 2013 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +/******************************************************************************* + * Copyright 2011 See libgdx AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.backend; + +import java.nio.Buffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; + +/** + * Interface wrapping all the methods of OpenGL ES 2.0 + * + * @author mzechner + */ +public interface GL { + public static final int ES_VERSION_2_0 = 1; + public static final int DEPTH_BUFFER_BIT = 0x00000100; + public static final int STENCIL_BUFFER_BIT = 0x00000400; + public static final int COLOR_BUFFER_BIT = 0x00004000; + public static final int FALSE = 0; + public static final int TRUE = 1; + public static final int POINTS = 0x0000; + public static final int LINES = 0x0001; + public static final int LINE_LOOP = 0x0002; + public static final int LINE_STRIP = 0x0003; + public static final int TRIANGLES = 0x0004; + public static final int TRIANGLE_STRIP = 0x0005; + public static final int TRIANGLE_FAN = 0x0006; + public static final int ZERO = 0; + public static final int ONE = 1; + public static final int SRC_COLOR = 0x0300; + public static final int ONE_MINUS_SRC_COLOR = 0x0301; + public static final int SRC_ALPHA = 0x0302; + public static final int ONE_MINUS_SRC_ALPHA = 0x0303; + public static final int DST_ALPHA = 0x0304; + public static final int ONE_MINUS_DST_ALPHA = 0x0305; + public static final int DST_COLOR = 0x0306; + public static final int ONE_MINUS_DST_COLOR = 0x0307; + public static final int SRC_ALPHA_SATURATE = 0x0308; + public static final int FUNC_ADD = 0x8006; + public static final int BLEND_EQUATION = 0x8009; + public static final int BLEND_EQUATION_RGB = 0x8009; + public static final int BLEND_EQUATION_ALPHA = 0x883D; + public static final int FUNC_SUBTRACT = 0x800A; + public static final int FUNC_REVERSE_SUBTRACT = 0x800B; + public static final int BLEND_DST_RGB = 0x80C8; + public static final int BLEND_SRC_RGB = 0x80C9; + public static final int BLEND_DST_ALPHA = 0x80CA; + public static final int BLEND_SRC_ALPHA = 0x80CB; + public static final int CONSTANT_COLOR = 0x8001; + public static final int ONE_MINUS_CONSTANT_COLOR = 0x8002; + public static final int CONSTANT_ALPHA = 0x8003; + public static final int ONE_MINUS_CONSTANT_ALPHA = 0x8004; + public static final int BLEND_COLOR = 0x8005; + public static final int ARRAY_BUFFER = 0x8892; + public static final int ELEMENT_ARRAY_BUFFER = 0x8893; + public static final int ARRAY_BUFFER_BINDING = 0x8894; + public static final int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + public static final int STREAM_DRAW = 0x88E0; + public static final int STATIC_DRAW = 0x88E4; + public static final int DYNAMIC_DRAW = 0x88E8; + public static final int BUFFER_SIZE = 0x8764; + public static final int BUFFER_USAGE = 0x8765; + public static final int CURRENT_VERTEX_ATTRIB = 0x8626; + public static final int FRONT = 0x0404; + public static final int BACK = 0x0405; + public static final int FRONT_AND_BACK = 0x0408; + public static final int TEXTURE_2D = 0x0DE1; + public static final int CULL_FACE = 0x0B44; + public static final int BLEND = 0x0BE2; + public static final int DITHER = 0x0BD0; + public static final int STENCIL_TEST = 0x0B90; + public static final int DEPTH_TEST = 0x0B71; + public static final int SCISSOR_TEST = 0x0C11; + public static final int POLYGON_OFFSET_FILL = 0x8037; + public static final int SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + public static final int SAMPLE_COVERAGE = 0x80A0; + //public static final int NO_ERROR = 0; + public static final int INVALID_ENUM = 0x0500; + public static final int INVALID_VALUE = 0x0501; + public static final int INVALID_OPERATION = 0x0502; + public static final int OUT_OF_MEMORY = 0x0505; + public static final int CW = 0x0900; + public static final int CCW = 0x0901; + public static final int LINE_WIDTH = 0x0B21; + public static final int ALIASED_POINT_SIZE_RANGE = 0x846D; + public static final int ALIASED_LINE_WIDTH_RANGE = 0x846E; + public static final int CULL_FACE_MODE = 0x0B45; + public static final int FRONT_FACE = 0x0B46; + public static final int DEPTH_RANGE = 0x0B70; + public static final int DEPTH_WRITEMASK = 0x0B72; + public static final int DEPTH_CLEAR_VALUE = 0x0B73; + public static final int DEPTH_FUNC = 0x0B74; + public static final int STENCIL_CLEAR_VALUE = 0x0B91; + public static final int STENCIL_FUNC = 0x0B92; + public static final int STENCIL_FAIL = 0x0B94; + public static final int STENCIL_PASS_DEPTH_FAIL = 0x0B95; + public static final int STENCIL_PASS_DEPTH_PASS = 0x0B96; + public static final int STENCIL_REF = 0x0B97; + public static final int STENCIL_VALUE_MASK = 0x0B93; + public static final int STENCIL_WRITEMASK = 0x0B98; + public static final int STENCIL_BACK_FUNC = 0x8800; + public static final int STENCIL_BACK_FAIL = 0x8801; + public static final int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + public static final int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + public static final int STENCIL_BACK_REF = 0x8CA3; + public static final int STENCIL_BACK_VALUE_MASK = 0x8CA4; + public static final int STENCIL_BACK_WRITEMASK = 0x8CA5; + public static final int VIEWPORT = 0x0BA2; + public static final int SCISSOR_BOX = 0x0C10; + public static final int COLOR_CLEAR_VALUE = 0x0C22; + public static final int COLOR_WRITEMASK = 0x0C23; + public static final int UNPACK_ALIGNMENT = 0x0CF5; + public static final int PACK_ALIGNMENT = 0x0D05; + public static final int MAX_TEXTURE_SIZE = 0x0D33; + public static final int MAX_TEXTURE_UNITS = 0x84E2; + public static final int MAX_VIEWPORT_DIMS = 0x0D3A; + public static final int SUBPIXEL_BITS = 0x0D50; + public static final int RED_BITS = 0x0D52; + public static final int GREEN_BITS = 0x0D53; + public static final int BLUE_BITS = 0x0D54; + public static final int ALPHA_BITS = 0x0D55; + public static final int DEPTH_BITS = 0x0D56; + public static final int STENCIL_BITS = 0x0D57; + public static final int POLYGON_OFFSET_UNITS = 0x2A00; + public static final int POLYGON_OFFSET_FACTOR = 0x8038; + public static final int TEXTURE_BINDING_2D = 0x8069; + public static final int SAMPLE_BUFFERS = 0x80A8; + public static final int SAMPLES = 0x80A9; + public static final int SAMPLE_COVERAGE_VALUE = 0x80AA; + public static final int SAMPLE_COVERAGE_INVERT = 0x80AB; + public static final int NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + public static final int COMPRESSED_TEXTURE_FORMATS = 0x86A3; + public static final int DONT_CARE = 0x1100; + public static final int FASTEST = 0x1101; + public static final int NICEST = 0x1102; + public static final int GENERATE_MIPMAP_HINT = 0x8192; + public static final int BYTE = 0x1400; + public static final int UNSIGNED_BYTE = 0x1401; + public static final int SHORT = 0x1402; + public static final int UNSIGNED_SHORT = 0x1403; + public static final int INT = 0x1404; + public static final int UNSIGNED_INT = 0x1405; + public static final int FLOAT = 0x1406; + public static final int FIXED = 0x140C; + public static final int DEPTH_COMPONENT = 0x1902; + public static final int ALPHA = 0x1906; + public static final int RGB = 0x1907; + public static final int RGBA = 0x1908; + public static final int LUMINANCE = 0x1909; + public static final int LUMINANCE_ALPHA = 0x190A; + public static final int UNSIGNED_SHORT_4_4_4_4 = 0x8033; + public static final int UNSIGNED_SHORT_5_5_5_1 = 0x8034; + public static final int UNSIGNED_SHORT_5_6_5 = 0x8363; + public static final int FRAGMENT_SHADER = 0x8B30; + public static final int VERTEX_SHADER = 0x8B31; + public static final int MAX_VERTEX_ATTRIBS = 0x8869; + public static final int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + public static final int MAX_VARYING_VECTORS = 0x8DFC; + public static final int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + public static final int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + public static final int MAX_TEXTURE_IMAGE_UNITS = 0x8872; + public static final int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + public static final int SHADER_TYPE = 0x8B4F; + public static final int DELETE_STATUS = 0x8B80; + public static final int LINK_STATUS = 0x8B82; + public static final int VALIDATE_STATUS = 0x8B83; + public static final int ATTACHED_SHADERS = 0x8B85; + public static final int ACTIVE_UNIFORMS = 0x8B86; + public static final int ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; + public static final int ACTIVE_ATTRIBUTES = 0x8B89; + public static final int ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; + public static final int SHADING_LANGUAGE_VERSION = 0x8B8C; + public static final int CURRENT_PROGRAM = 0x8B8D; + public static final int NEVER = 0x0200; + public static final int LESS = 0x0201; + public static final int EQUAL = 0x0202; + public static final int LEQUAL = 0x0203; + public static final int GREATER = 0x0204; + public static final int NOTEQUAL = 0x0205; + public static final int GEQUAL = 0x0206; + public static final int ALWAYS = 0x0207; + public static final int KEEP = 0x1E00; + public static final int REPLACE = 0x1E01; + public static final int INCR = 0x1E02; + public static final int DECR = 0x1E03; + public static final int INVERT = 0x150A; + public static final int INCR_WRAP = 0x8507; + public static final int DECR_WRAP = 0x8508; + public static final int VENDOR = 0x1F00; + public static final int RENDERER = 0x1F01; + public static final int VERSION = 0x1F02; + public static final int EXTENSIONS = 0x1F03; + public static final int NEAREST = 0x2600; + public static final int LINEAR = 0x2601; + public static final int NEAREST_MIPMAP_NEAREST = 0x2700; + public static final int LINEAR_MIPMAP_NEAREST = 0x2701; + public static final int NEAREST_MIPMAP_LINEAR = 0x2702; + public static final int LINEAR_MIPMAP_LINEAR = 0x2703; + public static final int TEXTURE_MAG_FILTER = 0x2800; + public static final int TEXTURE_MIN_FILTER = 0x2801; + public static final int TEXTURE_WRAP_S = 0x2802; + public static final int TEXTURE_WRAP_T = 0x2803; + public static final int TEXTURE = 0x1702; + public static final int TEXTURE_CUBE_MAP = 0x8513; + public static final int TEXTURE_BINDING_CUBE_MAP = 0x8514; + public static final int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + public static final int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + public static final int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + public static final int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + public static final int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + public static final int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + public static final int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + public static final int TEXTURE0 = 0x84C0; + public static final int TEXTURE1 = 0x84C1; + public static final int TEXTURE2 = 0x84C2; + public static final int TEXTURE3 = 0x84C3; + public static final int TEXTURE4 = 0x84C4; + public static final int TEXTURE5 = 0x84C5; + public static final int TEXTURE6 = 0x84C6; + public static final int TEXTURE7 = 0x84C7; + public static final int TEXTURE8 = 0x84C8; + public static final int TEXTURE9 = 0x84C9; + public static final int TEXTURE10 = 0x84CA; + public static final int TEXTURE11 = 0x84CB; + public static final int TEXTURE12 = 0x84CC; + public static final int TEXTURE13 = 0x84CD; + public static final int TEXTURE14 = 0x84CE; + public static final int TEXTURE15 = 0x84CF; + public static final int TEXTURE16 = 0x84D0; + public static final int TEXTURE17 = 0x84D1; + public static final int TEXTURE18 = 0x84D2; + public static final int TEXTURE19 = 0x84D3; + public static final int TEXTURE20 = 0x84D4; + public static final int TEXTURE21 = 0x84D5; + public static final int TEXTURE22 = 0x84D6; + public static final int TEXTURE23 = 0x84D7; + public static final int TEXTURE24 = 0x84D8; + public static final int TEXTURE25 = 0x84D9; + public static final int TEXTURE26 = 0x84DA; + public static final int TEXTURE27 = 0x84DB; + public static final int TEXTURE28 = 0x84DC; + public static final int TEXTURE29 = 0x84DD; + public static final int TEXTURE30 = 0x84DE; + public static final int TEXTURE31 = 0x84DF; + public static final int ACTIVE_TEXTURE = 0x84E0; + public static final int REPEAT = 0x2901; + public static final int CLAMP_TO_EDGE = 0x812F; + public static final int MIRRORED_REPEAT = 0x8370; + public static final int FLOAT_VEC2 = 0x8B50; + public static final int FLOAT_VEC3 = 0x8B51; + public static final int FLOAT_VEC4 = 0x8B52; + public static final int INT_VEC2 = 0x8B53; + public static final int INT_VEC3 = 0x8B54; + public static final int INT_VEC4 = 0x8B55; + public static final int BOOL = 0x8B56; + public static final int BOOL_VEC2 = 0x8B57; + public static final int BOOL_VEC3 = 0x8B58; + public static final int BOOL_VEC4 = 0x8B59; + public static final int FLOAT_MAT2 = 0x8B5A; + public static final int FLOAT_MAT3 = 0x8B5B; + public static final int FLOAT_MAT4 = 0x8B5C; + public static final int SAMPLER_2D = 0x8B5E; + public static final int SAMPLER_CUBE = 0x8B60; + public static final int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + public static final int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + public static final int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + public static final int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + public static final int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + public static final int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + public static final int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + public static final int IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + public static final int IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + public static final int COMPILE_STATUS = 0x8B81; + public static final int INFO_LOG_LENGTH = 0x8B84; + public static final int SHADER_SOURCE_LENGTH = 0x8B88; + public static final int SHADER_COMPILER = 0x8DFA; + public static final int SHADER_BINARY_FORMATS = 0x8DF8; + public static final int NUM_SHADER_BINARY_FORMATS = 0x8DF9; + public static final int LOW_FLOAT = 0x8DF0; + public static final int MEDIUM_FLOAT = 0x8DF1; + public static final int HIGH_FLOAT = 0x8DF2; + public static final int LOW_INT = 0x8DF3; + public static final int MEDIUM_INT = 0x8DF4; + public static final int HIGH_INT = 0x8DF5; + public static final int FRAMEBUFFER = 0x8D40; + public static final int RENDERBUFFER = 0x8D41; + public static final int RGBA4 = 0x8056; + public static final int RGB5_A1 = 0x8057; + public static final int RGB565 = 0x8D62; + public static final int DEPTH_COMPONENT16 = 0x81A5; + public static final int STENCIL_INDEX = 0x1901; + public static final int STENCIL_INDEX8 = 0x8D48; + public static final int RENDERBUFFER_WIDTH = 0x8D42; + public static final int RENDERBUFFER_HEIGHT = 0x8D43; + public static final int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + public static final int RENDERBUFFER_RED_SIZE = 0x8D50; + public static final int RENDERBUFFER_GREEN_SIZE = 0x8D51; + public static final int RENDERBUFFER_BLUE_SIZE = 0x8D52; + public static final int RENDERBUFFER_ALPHA_SIZE = 0x8D53; + public static final int RENDERBUFFER_DEPTH_SIZE = 0x8D54; + public static final int RENDERBUFFER_STENCIL_SIZE = 0x8D55; + public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + public static final int COLOR_ATTACHMENT0 = 0x8CE0; + public static final int DEPTH_ATTACHMENT = 0x8D00; + public static final int STENCIL_ATTACHMENT = 0x8D20; + public static final int NONE = 0; + public static final int FRAMEBUFFER_COMPLETE = 0x8CD5; + public static final int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + public static final int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + public static final int FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9; + public static final int FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + public static final int FRAMEBUFFER_BINDING = 0x8CA6; + public static final int RENDERBUFFER_BINDING = 0x8CA7; + public static final int MAX_RENDERBUFFER_SIZE = 0x84E8; + public static final int INVALID_FRAMEBUFFER_OPERATION = 0x0506; + public static final int VERTEX_PROGRAM_POINT_SIZE = 0x8642; + + // Extensions + public static final int COVERAGE_BUFFER_BIT_NV = 0x8000; + + public void attachShader(int program, int shader); + + public void bindAttribLocation(int program, int index, String name); + + public void bindBuffer(int target, int buffer); + + public void bindFramebuffer(int target, int framebuffer); + + public void bindRenderbuffer(int target, int renderbuffer); + + public void blendColor(float red, float green, float blue, float alpha); + + public void blendEquation(int mode); + + public void blendEquationSeparate(int modeRGB, int modeAlpha); + + public void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha); + + public void bufferData(int target, int size, Buffer data, int usage); + + public void bufferSubData(int target, int offset, int size, Buffer data); + + public int checkFramebufferStatus(int target); + + public void compileShader(int shader); + + public int createProgram(); + + public int createShader(int type); + + public void deleteBuffers(int n, IntBuffer buffers); + + public void deleteFramebuffers(int n, IntBuffer framebuffers); + + public void deleteProgram(int program); + + public void deleteRenderbuffers(int n, IntBuffer renderbuffers); + + public void deleteShader(int shader); + + public void detachShader(int program, int shader); + + public void disableVertexAttribArray(int index); + + public void drawElements(int mode, int count, int type, int offset); + + public void enableVertexAttribArray(int index); + + public void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, + int renderbuffer); + + public void framebufferTexture2D(int target, int attachment, int textarget, int texture, + int level); + + public void genBuffers(int n, IntBuffer buffers); + + public void generateMipmap(int target); + + public void genFramebuffers(int n, IntBuffer framebuffers); + + public void genRenderbuffers(int n, IntBuffer renderbuffers); + + // deviates + public String getActiveAttrib(int program, int index, IntBuffer size, Buffer type); + + // deviates + public String getActiveUniform(int program, int index, IntBuffer size, Buffer type); + + public void getAttachedShaders(int program, int maxcount, Buffer count, IntBuffer shaders); + + public int getAttribLocation(int program, String name); + + public void getBooleanv(int pname, Buffer params); + + public void getBufferParameteriv(int target, int pname, IntBuffer params); + + public void getFloatv(int pname, FloatBuffer params); + + public void getFramebufferAttachmentParameteriv(int target, int attachment, int pname, + IntBuffer params); + + public void getProgramiv(int program, int pname, IntBuffer params); + + // deviates + public String getProgramInfoLog(int program); + + public void getRenderbufferParameteriv(int target, int pname, IntBuffer params); + + public void getShaderiv(int shader, int pname, IntBuffer params); + + // deviates + public String getShaderInfoLog(int shader); + + public void getShaderPrecisionFormat(int shadertype, int precisiontype, IntBuffer range, + IntBuffer precision); + + public void getShaderSource(int shader, int bufsize, Buffer length, String source); + + public void getTexParameterfv(int target, int pname, FloatBuffer params); + + public void getTexParameteriv(int target, int pname, IntBuffer params); + + public void getUniformfv(int program, int location, FloatBuffer params); + + public void getUniformiv(int program, int location, IntBuffer params); + + public int getUniformLocation(int program, String name); + + public void getVertexAttribfv(int index, int pname, FloatBuffer params); + + public void getVertexAttribiv(int index, int pname, IntBuffer params); + + public void getVertexAttribPointerv(int index, int pname, Buffer pointer); + + public boolean isBuffer(int buffer); + + public boolean isEnabled(int cap); + + public boolean isFramebuffer(int framebuffer); + + public boolean isProgram(int program); + + public boolean isRenderbuffer(int renderbuffer); + + public boolean isShader(int shader); + + public boolean isTexture(int texture); + + public void linkProgram(int program); + + public void releaseShaderCompiler(); + + public void renderbufferStorage(int target, int internalformat, int width, int height); + + public void sampleCoverage(float value, boolean invert); + + public void shaderBinary(int n, IntBuffer shaders, int binaryformat, Buffer binary, int length); + + // Deviates + public void shaderSource(int shader, String string); + + public void stencilFuncSeparate(int face, int func, int ref, int mask); + + public void stencilMaskSeparate(int face, int mask); + + public void stencilOpSeparate(int face, int fail, int zfail, int zpass); + + public void texParameterfv(int target, int pname, FloatBuffer params); + + public void texParameteri(int target, int pname, int param); + + public void texParameteriv(int target, int pname, IntBuffer params); + + public void uniform1f(int location, float x); + + public void uniform1fv(int location, int count, FloatBuffer v); + + public void uniform1i(int location, int x); + + public void uniform1iv(int location, int count, IntBuffer v); + + public void uniform2f(int location, float x, float y); + + public void uniform2fv(int location, int count, FloatBuffer v); + + public void uniform2i(int location, int x, int y); + + public void uniform2iv(int location, int count, IntBuffer v); + + public void uniform3f(int location, float x, float y, float z); + + public void uniform3fv(int location, int count, FloatBuffer v); + + public void uniform3i(int location, int x, int y, int z); + + public void uniform3iv(int location, int count, IntBuffer v); + + public void uniform4f(int location, float x, float y, float z, float w); + + public void uniform4fv(int location, int count, FloatBuffer v); + + public void uniform4i(int location, int x, int y, int z, int w); + + public void uniform4iv(int location, int count, IntBuffer v); + + public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value); + + public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value); + + public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value); + + public void useProgram(int program); + + public void validateProgram(int program); + + public void vertexAttrib1f(int indx, float x); + + public void vertexAttrib1fv(int indx, FloatBuffer values); + + public void vertexAttrib2f(int indx, float x, float y); + + public void vertexAttrib2fv(int indx, FloatBuffer values); + + public void vertexAttrib3f(int indx, float x, float y, float z); + + public void vertexAttrib3fv(int indx, FloatBuffer values); + + public void vertexAttrib4f(int indx, float x, float y, float z, float w); + + public void vertexAttrib4fv(int indx, FloatBuffer values); + + public void vertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, + Buffer ptr); + + /** + * + */ + public void vertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, + int offset); + + //------------------------ + + public static final int GENERATE_MIPMAP = 0x8191; + public static final int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; + public static final int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; + + public void activeTexture(int texture); + + public void bindTexture(int target, int texture); + + public void blendFunc(int sfactor, int dfactor); + + public void clear(int mask); + + public void clearColor(float red, float green, float blue, float alpha); + + public void clearDepthf(float depth); + + public void clearStencil(int s); + + public void colorMask(boolean red, boolean green, boolean blue, boolean alpha); + + public void compressedTexImage2D(int target, int level, int internalformat, int width, + int height, int border, + int imageSize, Buffer data); + + public void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, + int width, int height, int format, + int imageSize, Buffer data); + + public void copyTexImage2D(int target, int level, int internalformat, int x, int y, + int width, int height, int border); + + public void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, + int width, int height); + + public void cullFace(int mode); + + public void deleteTextures(int n, IntBuffer textures); + + public void depthFunc(int func); + + public void depthMask(boolean flag); + + public void depthRangef(float zNear, float zFar); + + public void disable(int cap); + + public void drawArrays(int mode, int first, int count); + + public void drawElements(int mode, int count, int type, Buffer indices); + + public void enable(int cap); + + public void finish(); + + public void flush(); + + public void frontFace(int mode); + + public void genTextures(int n, IntBuffer textures); + + public int getError(); + + public void getIntegerv(int pname, IntBuffer params); + + public String getString(int name); + + public void hint(int target, int mode); + + public void lineWidth(float width); + + public void pixelStorei(int pname, int param); + + public void polygonOffset(float factor, float units); + + public void readPixels(int x, int y, int width, int height, int format, int type, + Buffer pixels); + + public void scissor(int x, int y, int width, int height); + + public void stencilFunc(int func, int ref, int mask); + + public void stencilMask(int mask); + + public void stencilOp(int fail, int zfail, int zpass); + + public void texImage2D(int target, int level, int internalformat, int width, int height, + int border, int format, int type, + Buffer pixels); + + public void texParameterf(int target, int pname, float param); + + public void texSubImage2D(int target, int level, int xoffset, int yoffset, int width, + int height, int format, int type, + Buffer pixels); + + public void viewport(int x, int y, int width, int height); +} diff --git a/vtm/src/org/oscim/layers/marker/ItemizedLayer.java b/vtm/src/org/oscim/layers/marker/ItemizedLayer.java index e583678c..a7bbcf5e 100644 --- a/vtm/src/org/oscim/layers/marker/ItemizedLayer.java +++ b/vtm/src/org/oscim/layers/marker/ItemizedLayer.java @@ -1,259 +1,259 @@ -/* - * Copyright 2012 osmdroid authors: Nicolas Gramlich, Theodore Hong, Fred Eisele - * - * Copyright 2013 Hannes Janetzek - * Copyright 2016 devemux86 - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ -package org.oscim.layers.marker; - -import java.util.ArrayList; -import java.util.List; - -import org.oscim.core.Box; -import org.oscim.core.Point; -import org.oscim.event.Gesture; -import org.oscim.event.GestureListener; -import org.oscim.event.MotionEvent; -import org.oscim.map.Map; -import org.oscim.map.Viewport; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ItemizedLayer extends MarkerLayer - implements GestureListener { - - static final Logger log = LoggerFactory.getLogger(ItemizedLayer.class); - - protected final List mItemList; - protected final Point mTmpPoint = new Point(); - protected OnItemGestureListener mOnItemGestureListener; - protected int mDrawnItemsLimit = Integer.MAX_VALUE; - - public ItemizedLayer(Map map, MarkerSymbol defaulMarker) { - this(map, new ArrayList(), defaulMarker, null); - } - - public ItemizedLayer(Map map, List list, - MarkerSymbol defaultMarker, - OnItemGestureListener listener) { - - super(map, defaultMarker); - - mItemList = list; - mOnItemGestureListener = listener; - populate(); - } - - public void setOnItemGestureListener(OnItemGestureListener listener) { - mOnItemGestureListener = listener; - } - - @Override - protected Item createItem(int index) { - return mItemList.get(index); - } - - @Override - public int size() { - return Math.min(mItemList.size(), mDrawnItemsLimit); - } - - public boolean addItem(Item item) { - final boolean result = mItemList.add(item); - populate(); - return result; - } - - public void addItem(int location, Item item) { - mItemList.add(location, item); - } - - public boolean addItems(List items) { - final boolean result = mItemList.addAll(items); - populate(); - return result; - } - - public void removeAllItems() { - removeAllItems(true); - } - - public void removeAllItems(boolean withPopulate) { - mItemList.clear(); - if (withPopulate) { - populate(); - } - } - - public boolean removeItem(Item item) { - final boolean result = mItemList.remove(item); - populate(); - return result; - } - - public Item removeItem(int position) { - final Item result = mItemList.remove(position); - populate(); - return result; - } - - /** - * Each of these methods performs a item sensitive check. If the item is - * located its corresponding method is called. The result of the call is - * returned. Helper methods are provided so that child classes may more - * easily override behavior without resorting to overriding the - * ItemGestureListener methods. - */ - // @Override - // public boolean onTap(MotionEvent event, MapPosition pos) { - // return activateSelectedItems(event, mActiveItemSingleTap); - // } - - protected boolean onSingleTapUpHelper(int index, Item item) { - return mOnItemGestureListener.onItemSingleTapUp(index, item); - } - - private final ActiveItem mActiveItemSingleTap = new ActiveItem() { - @Override - public boolean run(int index) { - final ItemizedLayer that = ItemizedLayer.this; - if (mOnItemGestureListener == null) { - return false; - } - return onSingleTapUpHelper(index, that.mItemList.get(index)); - } - }; - - protected boolean onLongPressHelper(int index, Item item) { - return this.mOnItemGestureListener.onItemLongPress(index, item); - } - - private final ActiveItem mActiveItemLongPress = new ActiveItem() { - @Override - public boolean run(final int index) { - final ItemizedLayer that = ItemizedLayer.this; - if (that.mOnItemGestureListener == null) { - return false; - } - return onLongPressHelper(index, that.mItemList.get(index)); - } - }; - - /** - * When a content sensitive action is performed the content item needs to be - * identified. This method does that and then performs the assigned task on - * that item. - * - * @return true if event is handled false otherwise - */ - protected boolean activateSelectedItems(MotionEvent event, ActiveItem task) { - int size = mItemList.size(); - if (size == 0) - return false; - - int eventX = (int) event.getX() - mMap.getWidth() / 2; - int eventY = (int) event.getY() - mMap.getHeight() / 2; - Viewport mapPosition = mMap.viewport(); - - Box box = mapPosition.getBBox(null, 128); - box.map2mercator(); - box.scale(1E6); - - int nearest = -1; - int inside = -1; - double insideY = -Double.MAX_VALUE; - - /* squared dist: 50*50 pixel ~ 2mm on 400dpi */ - double dist = 2500; - - for (int i = 0; i < size; i++) { - Item item = mItemList.get(i); - - if (!box.contains(item.getPoint().longitudeE6, - item.getPoint().latitudeE6)) - continue; - - mapPosition.toScreenPoint(item.getPoint(), mTmpPoint); - - float dx = (float) (mTmpPoint.x - eventX); - float dy = (float) (mTmpPoint.y - eventY); - - MarkerSymbol it = item.getMarker(); - if (it == null) - it = mMarkerRenderer.mDefaultMarker; - - if (it.isInside(dx, dy)) { - if (mTmpPoint.y > insideY) { - insideY = mTmpPoint.y; - inside = i; - } - } - if (inside >= 0) - continue; - - double d = dx * dx + dy * dy; - if (d > dist) - continue; - - dist = d; - nearest = i; - } - - if (inside >= 0) - nearest = inside; - - if (nearest >= 0 && task.run(nearest)) { - mMarkerRenderer.update(); - mMap.render(); - return true; - } - return false; - } - - /** - * When the item is touched one of these methods may be invoked depending on - * the type of touch. Each of them returns true if the event was completely - * handled. - */ - public static interface OnItemGestureListener { - public boolean onItemSingleTapUp(int index, T item); - - public boolean onItemLongPress(int index, T item); - } - - public static interface ActiveItem { - public boolean run(int aIndex); - } - - @Override - public boolean onGesture(Gesture g, MotionEvent e) { - if (g instanceof Gesture.Tap) - return activateSelectedItems(e, mActiveItemSingleTap); - - if (g instanceof Gesture.LongPress) - return activateSelectedItems(e, mActiveItemLongPress); - - return false; - } - - public Item getByUid(Object uid) { - for (Item it : mItemList) - if (it.getUid() == uid) - return it; - - return null; - } -} +/* + * Copyright 2012 osmdroid authors: Nicolas Gramlich, Theodore Hong, Fred Eisele + * + * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ +package org.oscim.layers.marker; + +import java.util.ArrayList; +import java.util.List; + +import org.oscim.core.Box; +import org.oscim.core.Point; +import org.oscim.event.Gesture; +import org.oscim.event.GestureListener; +import org.oscim.event.MotionEvent; +import org.oscim.map.Map; +import org.oscim.map.Viewport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ItemizedLayer extends MarkerLayer + implements GestureListener { + + static final Logger log = LoggerFactory.getLogger(ItemizedLayer.class); + + protected final List mItemList; + protected final Point mTmpPoint = new Point(); + protected OnItemGestureListener mOnItemGestureListener; + protected int mDrawnItemsLimit = Integer.MAX_VALUE; + + public ItemizedLayer(Map map, MarkerSymbol defaulMarker) { + this(map, new ArrayList(), defaulMarker, null); + } + + public ItemizedLayer(Map map, List list, + MarkerSymbol defaultMarker, + OnItemGestureListener listener) { + + super(map, defaultMarker); + + mItemList = list; + mOnItemGestureListener = listener; + populate(); + } + + public void setOnItemGestureListener(OnItemGestureListener listener) { + mOnItemGestureListener = listener; + } + + @Override + protected Item createItem(int index) { + return mItemList.get(index); + } + + @Override + public int size() { + return Math.min(mItemList.size(), mDrawnItemsLimit); + } + + public boolean addItem(Item item) { + final boolean result = mItemList.add(item); + populate(); + return result; + } + + public void addItem(int location, Item item) { + mItemList.add(location, item); + } + + public boolean addItems(List items) { + final boolean result = mItemList.addAll(items); + populate(); + return result; + } + + public void removeAllItems() { + removeAllItems(true); + } + + public void removeAllItems(boolean withPopulate) { + mItemList.clear(); + if (withPopulate) { + populate(); + } + } + + public boolean removeItem(Item item) { + final boolean result = mItemList.remove(item); + populate(); + return result; + } + + public Item removeItem(int position) { + final Item result = mItemList.remove(position); + populate(); + return result; + } + + /** + * Each of these methods performs a item sensitive check. If the item is + * located its corresponding method is called. The result of the call is + * returned. Helper methods are provided so that child classes may more + * easily override behavior without resorting to overriding the + * ItemGestureListener methods. + */ + // @Override + // public boolean onTap(MotionEvent event, MapPosition pos) { + // return activateSelectedItems(event, mActiveItemSingleTap); + // } + + protected boolean onSingleTapUpHelper(int index, Item item) { + return mOnItemGestureListener.onItemSingleTapUp(index, item); + } + + private final ActiveItem mActiveItemSingleTap = new ActiveItem() { + @Override + public boolean run(int index) { + final ItemizedLayer that = ItemizedLayer.this; + if (mOnItemGestureListener == null) { + return false; + } + return onSingleTapUpHelper(index, that.mItemList.get(index)); + } + }; + + protected boolean onLongPressHelper(int index, Item item) { + return this.mOnItemGestureListener.onItemLongPress(index, item); + } + + private final ActiveItem mActiveItemLongPress = new ActiveItem() { + @Override + public boolean run(final int index) { + final ItemizedLayer that = ItemizedLayer.this; + if (that.mOnItemGestureListener == null) { + return false; + } + return onLongPressHelper(index, that.mItemList.get(index)); + } + }; + + /** + * When a content sensitive action is performed the content item needs to be + * identified. This method does that and then performs the assigned task on + * that item. + * + * @return true if event is handled false otherwise + */ + protected boolean activateSelectedItems(MotionEvent event, ActiveItem task) { + int size = mItemList.size(); + if (size == 0) + return false; + + int eventX = (int) event.getX() - mMap.getWidth() / 2; + int eventY = (int) event.getY() - mMap.getHeight() / 2; + Viewport mapPosition = mMap.viewport(); + + Box box = mapPosition.getBBox(null, 128); + box.map2mercator(); + box.scale(1E6); + + int nearest = -1; + int inside = -1; + double insideY = -Double.MAX_VALUE; + + /* squared dist: 50*50 pixel ~ 2mm on 400dpi */ + double dist = 2500; + + for (int i = 0; i < size; i++) { + Item item = mItemList.get(i); + + if (!box.contains(item.getPoint().longitudeE6, + item.getPoint().latitudeE6)) + continue; + + mapPosition.toScreenPoint(item.getPoint(), mTmpPoint); + + float dx = (float) (mTmpPoint.x - eventX); + float dy = (float) (mTmpPoint.y - eventY); + + MarkerSymbol it = item.getMarker(); + if (it == null) + it = mMarkerRenderer.mDefaultMarker; + + if (it.isInside(dx, dy)) { + if (mTmpPoint.y > insideY) { + insideY = mTmpPoint.y; + inside = i; + } + } + if (inside >= 0) + continue; + + double d = dx * dx + dy * dy; + if (d > dist) + continue; + + dist = d; + nearest = i; + } + + if (inside >= 0) + nearest = inside; + + if (nearest >= 0 && task.run(nearest)) { + mMarkerRenderer.update(); + mMap.render(); + return true; + } + return false; + } + + /** + * When the item is touched one of these methods may be invoked depending on + * the type of touch. Each of them returns true if the event was completely + * handled. + */ + public static interface OnItemGestureListener { + public boolean onItemSingleTapUp(int index, T item); + + public boolean onItemLongPress(int index, T item); + } + + public static interface ActiveItem { + public boolean run(int aIndex); + } + + @Override + public boolean onGesture(Gesture g, MotionEvent e) { + if (g instanceof Gesture.Tap) + return activateSelectedItems(e, mActiveItemSingleTap); + + if (g instanceof Gesture.LongPress) + return activateSelectedItems(e, mActiveItemLongPress); + + return false; + } + + public Item getByUid(Object uid) { + for (Item it : mItemList) + if (it.getUid() == uid) + return it; + + return null; + } +} diff --git a/vtm/src/org/oscim/layers/marker/MarkerItem.java b/vtm/src/org/oscim/layers/marker/MarkerItem.java index 9feb9ac9..eb1bb999 100644 --- a/vtm/src/org/oscim/layers/marker/MarkerItem.java +++ b/vtm/src/org/oscim/layers/marker/MarkerItem.java @@ -1,94 +1,94 @@ -/* - * Copyright 2012 osmdroid authors: - * Copyright 2012 Nicolas Gramlich - * Copyright 2012 Theodore Hong - * Copyright 2012 Fred Eisele - * - * Copyright 2014 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ - -package org.oscim.layers.marker; - -import org.oscim.core.GeoPoint; - -/** - * Immutable class describing a GeoPoint with a Title and a Description. - */ -public class MarkerItem { - - public static final int ITEM_STATE_FOCUSED_MASK = 4; - public static final int ITEM_STATE_PRESSED_MASK = 1; - public static final int ITEM_STATE_SELECTED_MASK = 2; - - /** - * Indicates a hotspot for an area. This is where the origin (0,0) of a - * point will be located relative to the area. In otherwords this acts as an - * offset. NONE indicates that no adjustment should be made. - */ - public enum HotspotPlace { - NONE, CENTER, BOTTOM_CENTER, - TOP_CENTER, RIGHT_CENTER, LEFT_CENTER, - UPPER_RIGHT_CORNER, LOWER_RIGHT_CORNER, - UPPER_LEFT_CORNER, LOWER_LEFT_CORNER - } - - public final Object uid; - public final String title; - public final String description; - public final GeoPoint geoPoint; - protected MarkerSymbol mMarker; - - /** - * @param title - * this should be singleLine (no '\n' ) - * @param description - * a multiLine description ( '\n' possible) - */ - public MarkerItem(String title, String description, GeoPoint geoPoint) { - this(null, title, description, geoPoint); - } - - public MarkerItem(Object uid, String title, String description, GeoPoint geoPoint) { - this.title = title; - this.description = description; - this.geoPoint = geoPoint; - this.uid = uid; - } - - public Object getUid() { - return uid; - } - - public String getTitle() { - return title; - } - - public String getSnippet() { - return description; - } - - public GeoPoint getPoint() { - return geoPoint; - } - - public MarkerSymbol getMarker() { - return mMarker; - } - - public void setMarker(MarkerSymbol marker) { - mMarker = marker; - } -} +/* + * Copyright 2012 osmdroid authors: + * Copyright 2012 Nicolas Gramlich + * Copyright 2012 Theodore Hong + * Copyright 2012 Fred Eisele + * + * Copyright 2014 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ + +package org.oscim.layers.marker; + +import org.oscim.core.GeoPoint; + +/** + * Immutable class describing a GeoPoint with a Title and a Description. + */ +public class MarkerItem { + + public static final int ITEM_STATE_FOCUSED_MASK = 4; + public static final int ITEM_STATE_PRESSED_MASK = 1; + public static final int ITEM_STATE_SELECTED_MASK = 2; + + /** + * Indicates a hotspot for an area. This is where the origin (0,0) of a + * point will be located relative to the area. In otherwords this acts as an + * offset. NONE indicates that no adjustment should be made. + */ + public enum HotspotPlace { + NONE, CENTER, BOTTOM_CENTER, + TOP_CENTER, RIGHT_CENTER, LEFT_CENTER, + UPPER_RIGHT_CORNER, LOWER_RIGHT_CORNER, + UPPER_LEFT_CORNER, LOWER_LEFT_CORNER + } + + public final Object uid; + public final String title; + public final String description; + public final GeoPoint geoPoint; + protected MarkerSymbol mMarker; + + /** + * @param title + * this should be singleLine (no '\n' ) + * @param description + * a multiLine description ( '\n' possible) + */ + public MarkerItem(String title, String description, GeoPoint geoPoint) { + this(null, title, description, geoPoint); + } + + public MarkerItem(Object uid, String title, String description, GeoPoint geoPoint) { + this.title = title; + this.description = description; + this.geoPoint = geoPoint; + this.uid = uid; + } + + public Object getUid() { + return uid; + } + + public String getTitle() { + return title; + } + + public String getSnippet() { + return description; + } + + public GeoPoint getPoint() { + return geoPoint; + } + + public MarkerSymbol getMarker() { + return mMarker; + } + + public void setMarker(MarkerSymbol marker) { + mMarker = marker; + } +} diff --git a/vtm/src/org/oscim/layers/marker/MarkerLayer.java b/vtm/src/org/oscim/layers/marker/MarkerLayer.java index f9a8894c..d14a24be 100644 --- a/vtm/src/org/oscim/layers/marker/MarkerLayer.java +++ b/vtm/src/org/oscim/layers/marker/MarkerLayer.java @@ -1,115 +1,115 @@ -/* - * Copyright 2012 osmdroid authors: - * Copyright 2012 Nicolas Gramlich - * Copyright 2012 Theodore Hong - * Copyright 2012 Fred Eisele - * - * Copyright 2013 Hannes Janetzek - * - * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). - * - * This program is free software: you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with - * this program. If not, see . - */ - -package org.oscim.layers.marker; - -import org.oscim.core.Point; -import org.oscim.layers.Layer; -import org.oscim.map.Map; - -/** - * Draws a list of {@link MarkerItem} as markers to a map. The item with the - * lowest index is drawn as last and therefore the 'topmost' marker. It also - * gets checked for onTap first. This class is generic, because you then you get - * your custom item-class passed back in onTap(). << TODO - */ -public abstract class MarkerLayer extends Layer { - - protected final MarkerRenderer mMarkerRenderer; - protected Item mFocusedItem; - - /** - * Method by which subclasses create the actual Items. This will only be - * called from populate() we'll cache them for later use. - */ - protected abstract Item createItem(int i); - - /** - * The number of items in this overlay. - */ - public abstract int size(); - - @SuppressWarnings("unchecked") - public MarkerLayer(Map map, MarkerSymbol defaultSymbol) { - super(map); - - mMarkerRenderer = new MarkerRenderer((MarkerLayer) this, defaultSymbol); - mRenderer = mMarkerRenderer; - } - - /** - * Utility method to perform all processing on a new ItemizedOverlay. - * Subclasses provide Items through the createItem(int) method. The subclass - * should call this as soon as it has data, before anything else gets - * called. - */ - protected final void populate() { - mMarkerRenderer.populate(size()); - } - - /** - * TODO - * If the given Item is found in the overlay, force it to be the current - * focus-bearer. Any registered {link ItemizedLayer#OnFocusChangeListener} - * will be notified. This does not move the map, so if the Item isn't - * already centered, the user may get confused. If the Item is not found, - * this is a no-op. You can also pass null to remove focus. - * - * @param item - */ - public void setFocus(Item item) { - mFocusedItem = item; - } - - /** - * @return the currently-focused item, or null if no item is currently - * focused. - */ - public Item getFocus() { - return mFocusedItem; - } - - /** - * TODO - * Interface definition for overlays that contain items that can be snapped - * to (for example, when the user invokes a zoom, this could be called - * allowing the user to snap the zoom to an interesting point.) - */ - public interface Snappable { - - /** - * Checks to see if the given x and y are close enough to an item - * resulting in snapping the current action (e.g. zoom) to the item. - * - * @param x - * The x in screen coordinates. - * @param y - * The y in screen coordinates. - * @param snapPoint - * To be filled with the the interesting point (in screen - * coordinates) that is closest to the given x and y. Can be - * untouched if not snapping. - * @return Whether or not to snap to the interesting point. - */ - boolean onSnapToItem(int x, int y, Point snapPoint); - } -} +/* + * Copyright 2012 osmdroid authors: + * Copyright 2012 Nicolas Gramlich + * Copyright 2012 Theodore Hong + * Copyright 2012 Fred Eisele + * + * Copyright 2013 Hannes Janetzek + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ + +package org.oscim.layers.marker; + +import org.oscim.core.Point; +import org.oscim.layers.Layer; +import org.oscim.map.Map; + +/** + * Draws a list of {@link MarkerItem} as markers to a map. The item with the + * lowest index is drawn as last and therefore the 'topmost' marker. It also + * gets checked for onTap first. This class is generic, because you then you get + * your custom item-class passed back in onTap(). << TODO + */ +public abstract class MarkerLayer extends Layer { + + protected final MarkerRenderer mMarkerRenderer; + protected Item mFocusedItem; + + /** + * Method by which subclasses create the actual Items. This will only be + * called from populate() we'll cache them for later use. + */ + protected abstract Item createItem(int i); + + /** + * The number of items in this overlay. + */ + public abstract int size(); + + @SuppressWarnings("unchecked") + public MarkerLayer(Map map, MarkerSymbol defaultSymbol) { + super(map); + + mMarkerRenderer = new MarkerRenderer((MarkerLayer) this, defaultSymbol); + mRenderer = mMarkerRenderer; + } + + /** + * Utility method to perform all processing on a new ItemizedOverlay. + * Subclasses provide Items through the createItem(int) method. The subclass + * should call this as soon as it has data, before anything else gets + * called. + */ + protected final void populate() { + mMarkerRenderer.populate(size()); + } + + /** + * TODO + * If the given Item is found in the overlay, force it to be the current + * focus-bearer. Any registered {link ItemizedLayer#OnFocusChangeListener} + * will be notified. This does not move the map, so if the Item isn't + * already centered, the user may get confused. If the Item is not found, + * this is a no-op. You can also pass null to remove focus. + * + * @param item + */ + public void setFocus(Item item) { + mFocusedItem = item; + } + + /** + * @return the currently-focused item, or null if no item is currently + * focused. + */ + public Item getFocus() { + return mFocusedItem; + } + + /** + * TODO + * Interface definition for overlays that contain items that can be snapped + * to (for example, when the user invokes a zoom, this could be called + * allowing the user to snap the zoom to an interesting point.) + */ + public interface Snappable { + + /** + * Checks to see if the given x and y are close enough to an item + * resulting in snapping the current action (e.g. zoom) to the item. + * + * @param x + * The x in screen coordinates. + * @param y + * The y in screen coordinates. + * @param snapPoint + * To be filled with the the interesting point (in screen + * coordinates) that is closest to the given x and y. Can be + * untouched if not snapping. + * @return Whether or not to snap to the interesting point. + */ + boolean onSnapToItem(int x, int y, Point snapPoint); + } +} diff --git a/vtm/src/org/oscim/utils/TimSort.java b/vtm/src/org/oscim/utils/TimSort.java index 2f78688e..9b8e0a68 100644 --- a/vtm/src/org/oscim/utils/TimSort.java +++ b/vtm/src/org/oscim/utils/TimSort.java @@ -1,1027 +1,1027 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the - * License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" - * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - */ - -package org.oscim.utils; - -import java.util.Arrays; -import java.util.Comparator; - -/** - * A stable, adaptive, iterative mergesort that requires far fewer than n lg(n) - * comparisons when running on partially sorted - * arrays, while offering performance comparable to a traditional mergesort when - * run on random arrays. Like all proper mergesorts, - * this sort is stable and runs O(n log n) time (worst case). In the worst case, - * this sort requires temporary storage space for - * n/2 object references; in the best case, it requires only a small constant - * amount of space. - * - * This implementation was adapted from Tim Peters's list sort for Python, which - * is described in detail here: - * - * http://svn.python.org/projects/python/trunk/Objects/listsort.txt - * - * Tim's C code may be found here: - * - * http://svn.python.org/projects/python/trunk/Objects/listobject.c - * - * The underlying techniques are described in this paper (and may have even - * earlier origins): - * - * "Optimistic Sorting and Information Theoretic Complexity" Peter McIlroy SODA - * (Fourth Annual ACM-SIAM Symposium on Discrete - * Algorithms), pp 467-474, Austin, Texas, 25-27 January 1993. - * - * While the API to this class consists solely of static methods, it is - * (privately) instantiable; a TimSort instance holds the - * state of an ongoing sort, assuming the input array is large enough to warrant - * the full-blown TimSort. Small arrays are sorted - * in place, using a binary insertion sort. - */ -public class TimSort { - /** - * This is the minimum sized sequence that will be merged. Shorter sequences - * will be lengthened by calling binarySort. If the - * entire array is less than this length, no merges will be performed. - * - * This constant should be a power of two. It was 64 in Tim Peter's C - * implementation, but 32 was empirically determined to work - * better in this implementation. In the unlikely event that you set this - * constant to be a number that's not a power of two, - * you'll need to change the {@link #minRunLength} computation. - * - * If you decrease this constant, you must change the stackLen computation - * in the TimSort constructor, or you risk an - * ArrayOutOfBounds exception. See listsort.txt for a discussion of the - * minimum stack length required as a function of the - * length of the array being sorted and the minimum merge sequence length. - */ - private static final int MIN_MERGE = 32; - - /** The array being sorted. */ - private T[] a; - - /** The comparator for this sort. */ - private Comparator c; - - /** - * When we get into galloping mode, we stay there until both runs win less - * often than MIN_GALLOP consecutive times. - */ - private static final int MIN_GALLOP = 7; - - /** - * This controls when we get *into* galloping mode. It is initialized to - * MIN_GALLOP. The mergeLo and mergeHi methods nudge it - * higher for random data, and lower for highly structured data. - */ - private int minGallop = MIN_GALLOP; - - /** - * Maximum initial size of tmp array, which is used for merging. The array - * can grow to accommodate demand. - * - * Unlike Tim's original C version, we do not allocate this much storage - * when sorting smaller arrays. This change was required - * for performance. - */ - private static final int INITIAL_TMP_STORAGE_LENGTH = 256; - - /** Temp storage for merges. */ - private T[] tmp; // Actual runtime type will be Object[], regardless of T - private int tmpCount; - - /** - * A stack of pending runs yet to be merged. Run i starts at address base[i] - * and extends for len[i] elements. It's always true - * (so long as the indices are in bounds) that: - * - * runBase[i] + runLen[i] == runBase[i + 1] - * - * so we could cut the storage for this, but it's a minor amount, and - * keeping all the info explicit simplifies the code. - */ - private int stackSize = 0; // Number of pending runs on stack - private final int[] runBase; - private final int[] runLen; - - /** - * Asserts have been placed in if-statements for performace. To enable them, - * set this field to true and enable them in VM with - * a command line flag. If you modify this class, please do test the - * asserts! - */ - private static final boolean DEBUG = false; - - @SuppressWarnings("unchecked") - public TimSort() { - tmp = (T[]) new Object[INITIAL_TMP_STORAGE_LENGTH]; - runBase = new int[40]; - runLen = new int[40]; - } - - public void doSort(T[] a, Comparator c, int lo, int hi) { - stackSize = 0; - rangeCheck(a.length, lo, hi); - int nRemaining = hi - lo; - if (nRemaining < 2) - return; // Arrays of size 0 and 1 are always sorted - - // If array is small, do a "mini-TimSort" with no merges - if (nRemaining < MIN_MERGE) { - int initRunLen = countRunAndMakeAscending(a, lo, hi, c); - binarySort(a, lo, hi, lo + initRunLen, c); - return; - } - - this.a = a; - this.c = c; - tmpCount = 0; - - /** - * March over the array once, left to right, finding natural runs, - * extending short natural runs to minRun elements, and - * merging runs to maintain stack invariant. - */ - int minRun = minRunLength(nRemaining); - do { - // Identify next run - int runLen = countRunAndMakeAscending(a, lo, hi, c); - - // If run is short, extend to min(minRun, nRemaining) - if (runLen < minRun) { - int force = nRemaining <= minRun ? nRemaining : minRun; - binarySort(a, lo, lo + force, lo + runLen, c); - runLen = force; - } - - // Push run onto pending-run stack, and maybe merge - pushRun(lo, runLen); - mergeCollapse(); - - // Advance to find next run - lo += runLen; - nRemaining -= runLen; - } while (nRemaining != 0); - - // Merge all remaining runs to complete sort - if (DEBUG) - assert lo == hi; - mergeForceCollapse(); - if (DEBUG) - assert stackSize == 1; - - this.a = null; - this.c = null; - T[] tmp = this.tmp; - for (int i = 0, n = tmpCount; i < n; i++) - tmp[i] = null; - } - - /** - * Creates a TimSort instance to maintain the state of an ongoing sort. - * - * @param a the array to be sorted - * @param c the comparator to determine the order of the sort - */ - private TimSort(T[] a, Comparator c) { - this.a = a; - this.c = c; - - // Allocate temp storage (which may be increased later if necessary) - int len = a.length; - @SuppressWarnings("unchecked") - T[] newArray = (T[]) new Object[len < 2 * INITIAL_TMP_STORAGE_LENGTH ? len >>> 1 - : INITIAL_TMP_STORAGE_LENGTH]; - tmp = newArray; - - /* - * Allocate runs-to-be-merged stack (which cannot be expanded). The - * stack length requirements are described in listsort.txt. - * The C version always uses the same stack length (85), but this was - * measured to be too expensive when sorting "mid-sized" - * arrays (e.g., 100 elements) in Java. Therefore, we use smaller (but - * sufficiently large) stack lengths for smaller arrays. - * The "magic numbers" in the computation below must be changed if - * MIN_MERGE is decreased. See the MIN_MERGE declaration - * above for more information. - */ - int stackLen = (len < 120 ? 5 : len < 1542 ? 10 : len < 119151 ? 19 : 40); - runBase = new int[stackLen]; - runLen = new int[stackLen]; - } - - /* - * The next two methods (which are package private and static) constitute - * the entire API of this class. Each of these methods - * obeys the contract of the public method with the same signature in - * java.util.Arrays. - */ - - static void sort(T[] a, Comparator c) { - sort(a, 0, a.length, c); - } - - static void sort(T[] a, int lo, int hi, Comparator c) { - if (c == null) { - Arrays.sort(a, lo, hi); - return; - } - - rangeCheck(a.length, lo, hi); - int nRemaining = hi - lo; - if (nRemaining < 2) - return; // Arrays of size 0 and 1 are always sorted - - // If array is small, do a "mini-TimSort" with no merges - if (nRemaining < MIN_MERGE) { - int initRunLen = countRunAndMakeAscending(a, lo, hi, c); - binarySort(a, lo, hi, lo + initRunLen, c); - return; - } - - /** - * March over the array once, left to right, finding natural runs, - * extending short natural runs to minRun elements, and - * merging runs to maintain stack invariant. - */ - TimSort ts = new TimSort(a, c); - int minRun = minRunLength(nRemaining); - do { - // Identify next run - int runLen = countRunAndMakeAscending(a, lo, hi, c); - - // If run is short, extend to min(minRun, nRemaining) - if (runLen < minRun) { - int force = nRemaining <= minRun ? nRemaining : minRun; - binarySort(a, lo, lo + force, lo + runLen, c); - runLen = force; - } - - // Push run onto pending-run stack, and maybe merge - ts.pushRun(lo, runLen); - ts.mergeCollapse(); - - // Advance to find next run - lo += runLen; - nRemaining -= runLen; - } while (nRemaining != 0); - - // Merge all remaining runs to complete sort - if (DEBUG) - assert lo == hi; - ts.mergeForceCollapse(); - if (DEBUG) - assert ts.stackSize == 1; - } - - /** - * Sorts the specified portion of the specified array using a binary - * insertion sort. This is the best method for sorting small - * numbers of elements. It requires O(n log n) compares, but O(n^2) data - * movement (worst case). - * - * If the initial part of the specified range is already sorted, this method - * can take advantage of it: the method assumes that - * the elements from index {@code lo}, inclusive, to {@code start}, - * exclusive - * are already sorted. - * - * @param a the array in which a range is to be sorted - * @param lo the index of the first element in the range to be sorted - * @param hi the index after the last element in the range to be sorted - * @param start the index of the first element in the range that is not - * already known to be sorted (@code lo <= start <= hi} - * @param c comparator to used for the sort - */ - @SuppressWarnings("fallthrough") - private static void binarySort(T[] a, int lo, int hi, int start, Comparator c) { - if (DEBUG) - assert lo <= start && start <= hi; - if (start == lo) - start++; - for (; start < hi; start++) { - T pivot = a[start]; - - // Set left (and right) to the index where a[start] (pivot) belongs - int left = lo; - int right = start; - if (DEBUG) - assert left <= right; - /* - * Invariants: pivot >= all in [lo, left). pivot < all in [right, - * start). - */ - while (left < right) { - int mid = (left + right) >>> 1; - if (c.compare(pivot, a[mid]) < 0) - right = mid; - else - left = mid + 1; - } - if (DEBUG) - assert left == right; - - /* - * The invariants still hold: pivot >= all in [lo, left) and pivot < - * all in [left, start), so pivot belongs at left. Note - * that if there are elements equal to pivot, left points to the - * first slot after them -- that's why this sort is stable. - * Slide elements over to make room to make room for pivot. - */ - int n = start - left; // The number of elements to move - // Switch is just an optimization for arraycopy in default case - switch (n) { - case 2: - a[left + 2] = a[left + 1]; - case 1: - a[left + 1] = a[left]; - break; - default: - System.arraycopy(a, left, a, left + 1, n); - } - a[left] = pivot; - } - } - - /** - * Returns the length of the run beginning at the specified position in the - * specified array and reverses the run if it is - * descending (ensuring that the run will always be ascending when the - * method returns). - * - * A run is the longest ascending sequence with: - * - * a[lo] <= a[lo + 1] <= a[lo + 2] <= ... - * - * or the longest descending sequence with: - * - * a[lo] > a[lo + 1] > a[lo + 2] > ... - * - * For its intended use in a stable mergesort, the strictness of the - * definition of "descending" is needed so that the call can - * safely reverse a descending sequence without violating stability. - * - * @param a the array in which a run is to be counted and possibly reversed - * @param lo index of the first element in the run - * @param hi index after the last element that may be contained in the run. - * It is required that @code{lo < hi}. - * @param c the comparator to used for the sort - * @return the length of the run beginning at the specified position in the - * specified array - */ - private static int countRunAndMakeAscending(T[] a, int lo, int hi, Comparator c) { - if (DEBUG) - assert lo < hi; - int runHi = lo + 1; - if (runHi == hi) - return 1; - - // Find end of run, and reverse range if descending - if (c.compare(a[runHi++], a[lo]) < 0) { // Descending - while (runHi < hi && c.compare(a[runHi], a[runHi - 1]) < 0) - runHi++; - reverseRange(a, lo, runHi); - } else { // Ascending - while (runHi < hi && c.compare(a[runHi], a[runHi - 1]) >= 0) - runHi++; - } - - return runHi - lo; - } - - /** - * Reverse the specified range of the specified array. - * - * @param a the array in which a range is to be reversed - * @param lo the index of the first element in the range to be reversed - * @param hi the index after the last element in the range to be reversed - */ - private static void reverseRange(Object[] a, int lo, int hi) { - hi--; - while (lo < hi) { - Object t = a[lo]; - a[lo++] = a[hi]; - a[hi--] = t; - } - } - - /** - * Returns the minimum acceptable run length for an array of the specified - * length. Natural runs shorter than this will be - * extended with {@link #binarySort}. - * - * Roughly speaking, the computation is: - * - * If n < MIN_MERGE, return n (it's too small to bother with fancy stuff). - * Else if n is an exact power of 2, return - * MIN_MERGE/2. Else return an int k, MIN_MERGE/2 <= k <= MIN_MERGE, such - * that n/k is close to, but strictly less than, an - * exact power of 2. - * - * For the rationale, see listsort.txt. - * - * @param n the length of the array to be sorted - * @return the length of the minimum run to be merged - */ - private static int minRunLength(int n) { - if (DEBUG) - assert n >= 0; - int r = 0; // Becomes 1 if any 1 bits are shifted off - while (n >= MIN_MERGE) { - r |= (n & 1); - n >>= 1; - } - return n + r; - } - - /** - * Pushes the specified run onto the pending-run stack. - * - * @param runBase index of the first element in the run - * @param runLen the number of elements in the run - */ - private void pushRun(int runBase, int runLen) { - this.runBase[stackSize] = runBase; - this.runLen[stackSize] = runLen; - stackSize++; - } - - /** - * Examines the stack of runs waiting to be merged and merges adjacent runs - * until the stack invariants are reestablished: - * - * 1. runLen[i - 3] > runLen[i - 2] + runLen[i - 1] 2. runLen[i - 2] > - * runLen[i - 1] - * - * This method is called each time a new run is pushed onto the stack, so - * the invariants are guaranteed to hold for i < - * stackSize upon entry to the method. - */ - private void mergeCollapse() { - while (stackSize > 1) { - int n = stackSize - 2; - if (n > 0 && runLen[n - 1] <= runLen[n] + runLen[n + 1]) { - if (runLen[n - 1] < runLen[n + 1]) - n--; - mergeAt(n); - } else if (runLen[n] <= runLen[n + 1]) { - mergeAt(n); - } else { - break; // Invariant is established - } - } - } - - /** - * Merges all runs on the stack until only one remains. This method is - * called once, to complete the sort. - */ - private void mergeForceCollapse() { - while (stackSize > 1) { - int n = stackSize - 2; - if (n > 0 && runLen[n - 1] < runLen[n + 1]) - n--; - mergeAt(n); - } - } - - /** - * Merges the two runs at stack indices i and i+1. Run i must be the - * penultimate or antepenultimate run on the stack. In other - * words, i must be equal to stackSize-2 or stackSize-3. - * - * @param i stack index of the first of the two runs to merge - */ - private void mergeAt(int i) { - if (DEBUG) - assert stackSize >= 2; - if (DEBUG) - assert i >= 0; - if (DEBUG) - assert i == stackSize - 2 || i == stackSize - 3; - - int base1 = runBase[i]; - int len1 = runLen[i]; - int base2 = runBase[i + 1]; - int len2 = runLen[i + 1]; - if (DEBUG) - assert len1 > 0 && len2 > 0; - if (DEBUG) - assert base1 + len1 == base2; - - /* - * Record the length of the combined runs; if i is the 3rd-last run now, - * also slide over the last run (which isn't involved - * in this merge). The current run (i+1) goes away in any case. - */ - runLen[i] = len1 + len2; - if (i == stackSize - 3) { - runBase[i + 1] = runBase[i + 2]; - runLen[i + 1] = runLen[i + 2]; - } - stackSize--; - - /* - * Find where the first element of run2 goes in run1. Prior elements in - * run1 can be ignored (because they're already in - * place). - */ - int k = gallopRight(a[base2], a, base1, len1, 0, c); - if (DEBUG) - assert k >= 0; - base1 += k; - len1 -= k; - if (len1 == 0) - return; - - /* - * Find where the last element of run1 goes in run2. Subsequent elements - * in run2 can be ignored (because they're already in - * place). - */ - len2 = gallopLeft(a[base1 + len1 - 1], a, base2, len2, len2 - 1, c); - if (DEBUG) - assert len2 >= 0; - if (len2 == 0) - return; - - // Merge remaining runs, using tmp array with min(len1, len2) elements - if (len1 <= len2) - mergeLo(base1, len1, base2, len2); - else - mergeHi(base1, len1, base2, len2); - } - - /** - * Locates the position at which to insert the specified key into the - * specified sorted range; if the range contains an element - * equal to key, returns the index of the leftmost equal element. - * - * @param key the key whose insertion point to search for - * @param a the array in which to search - * @param base the index of the first element in the range - * @param len the length of the range; must be > 0 - * @param hint the index at which to begin the search, 0 <= hint < n. The - * closer hint is to the result, the faster this method - * will run. - * @param c the comparator used to order the range, and to search - * @return the int k, 0 <= k <= n such that a[b + k - 1] < key <= a[b + k], - * pretending that a[b - 1] is minus infinity and a[b - * + n] is infinity. In other words, key belongs at index b + k; or - * in other words, the first k elements of a should - * precede key, and the last n - k should follow it. - */ - private static int gallopLeft(T key, T[] a, int base, int len, int hint, - Comparator c) { - if (DEBUG) - assert len > 0 && hint >= 0 && hint < len; - int lastOfs = 0; - int ofs = 1; - if (c.compare(key, a[base + hint]) > 0) { - // Gallop right until a[base+hint+lastOfs] < key <= a[base+hint+ofs] - int maxOfs = len - hint; - while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) > 0) { - lastOfs = ofs; - ofs = (ofs << 1) + 1; - if (ofs <= 0) // int overflow - ofs = maxOfs; - } - if (ofs > maxOfs) - ofs = maxOfs; - - // Make offsets relative to base - lastOfs += hint; - ofs += hint; - } else { // key <= a[base + hint] - // Gallop left until a[base+hint-ofs] < key <= a[base+hint-lastOfs] - final int maxOfs = hint + 1; - while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) <= 0) { - lastOfs = ofs; - ofs = (ofs << 1) + 1; - if (ofs <= 0) // int overflow - ofs = maxOfs; - } - if (ofs > maxOfs) - ofs = maxOfs; - - // Make offsets relative to base - int tmp = lastOfs; - lastOfs = hint - ofs; - ofs = hint - tmp; - } - if (DEBUG) - assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; - - /* - * Now a[base+lastOfs] < key <= a[base+ofs], so key belongs somewhere to - * the right of lastOfs but no farther right than ofs. - * Do a binary search, with invariant a[base + lastOfs - 1] < key <= - * a[base + ofs]. - */ - lastOfs++; - while (lastOfs < ofs) { - int m = lastOfs + ((ofs - lastOfs) >>> 1); - - if (c.compare(key, a[base + m]) > 0) - lastOfs = m + 1; // a[base + m] < key - else - ofs = m; // key <= a[base + m] - } - if (DEBUG) - assert lastOfs == ofs; // so a[base + ofs - 1] < key <= a[base + ofs] - return ofs; - } - - /** - * Like gallopLeft, except that if the range contains an element equal to - * key, gallopRight returns the index after the - * rightmost equal element. - * - * @param key the key whose insertion point to search for - * @param a the array in which to search - * @param base the index of the first element in the range - * @param len the length of the range; must be > 0 - * @param hint the index at which to begin the search, 0 <= hint < n. The - * closer hint is to the result, the faster this method - * will run. - * @param c the comparator used to order the range, and to search - * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] - */ - private static int gallopRight(T key, T[] a, int base, int len, int hint, - Comparator c) { - if (DEBUG) - assert len > 0 && hint >= 0 && hint < len; - - int ofs = 1; - int lastOfs = 0; - if (c.compare(key, a[base + hint]) < 0) { - // Gallop left until a[b+hint - ofs] <= key < a[b+hint - lastOfs] - int maxOfs = hint + 1; - while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) < 0) { - lastOfs = ofs; - ofs = (ofs << 1) + 1; - if (ofs <= 0) // int overflow - ofs = maxOfs; - } - if (ofs > maxOfs) - ofs = maxOfs; - - // Make offsets relative to b - int tmp = lastOfs; - lastOfs = hint - ofs; - ofs = hint - tmp; - } else { // a[b + hint] <= key - // Gallop right until a[b+hint + lastOfs] <= key < a[b+hint + ofs] - int maxOfs = len - hint; - while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) >= 0) { - lastOfs = ofs; - ofs = (ofs << 1) + 1; - if (ofs <= 0) // int overflow - ofs = maxOfs; - } - if (ofs > maxOfs) - ofs = maxOfs; - - // Make offsets relative to b - lastOfs += hint; - ofs += hint; - } - if (DEBUG) - assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; - - /* - * Now a[b + lastOfs] <= key < a[b + ofs], so key belongs somewhere to - * the right of lastOfs but no farther right than ofs. - * Do a binary search, with invariant a[b + lastOfs - 1] <= key < a[b + - * ofs]. - */ - lastOfs++; - while (lastOfs < ofs) { - int m = lastOfs + ((ofs - lastOfs) >>> 1); - - if (c.compare(key, a[base + m]) < 0) - ofs = m; // key < a[b + m] - else - lastOfs = m + 1; // a[b + m] <= key - } - if (DEBUG) - assert lastOfs == ofs; // so a[b + ofs - 1] <= key < a[b + ofs] - return ofs; - } - - /** - * Merges two adjacent runs in place, in a stable fashion. The first element - * of the first run must be greater than the first - * element of the second run (a[base1] > a[base2]), and the last element of - * the first run (a[base1 + len1-1]) must be greater - * than all elements of the second run. - * - * For performance, this method should be called only when len1 <= len2; its - * twin, mergeHi should be called if len1 >= len2. - * (Either method may be called if len1 == len2.) - * - * @param base1 index of first element in first run to be merged - * @param len1 length of first run to be merged (must be > 0) - * @param base2 index of first element in second run to be merged (must be - * aBase + aLen) - * @param len2 length of second run to be merged (must be > 0) - */ - private void mergeLo(int base1, int len1, int base2, int len2) { - if (DEBUG) - assert len1 > 0 && len2 > 0 && base1 + len1 == base2; - - // Copy first run into temp array - T[] a = this.a; // For performance - T[] tmp = ensureCapacity(len1); - System.arraycopy(a, base1, tmp, 0, len1); - - int cursor1 = 0; // Indexes into tmp array - int cursor2 = base2; // Indexes int a - int dest = base1; // Indexes int a - - // Move first element of second run and deal with degenerate cases - a[dest++] = a[cursor2++]; - if (--len2 == 0) { - System.arraycopy(tmp, cursor1, a, dest, len1); - return; - } - if (len1 == 1) { - System.arraycopy(a, cursor2, a, dest, len2); - a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge - return; - } - - Comparator c = this.c; // Use local variable for performance - int minGallop = this.minGallop; // " " " " " - outer: while (true) { - int count1 = 0; // Number of times in a row that first run won - int count2 = 0; // Number of times in a row that second run won - - /* - * Do the straightforward thing until (if ever) one run starts - * winning consistently. - */ - do { - if (DEBUG) - assert len1 > 1 && len2 > 0; - if (c.compare(a[cursor2], tmp[cursor1]) < 0) { - a[dest++] = a[cursor2++]; - count2++; - count1 = 0; - if (--len2 == 0) - break outer; - } else { - a[dest++] = tmp[cursor1++]; - count1++; - count2 = 0; - if (--len1 == 1) - break outer; - } - } while ((count1 | count2) < minGallop); - - /* - * One run is winning so consistently that galloping may be a huge - * win. So try that, and continue galloping until (if - * ever) neither run appears to be winning consistently anymore. - */ - do { - if (DEBUG) - assert len1 > 1 && len2 > 0; - count1 = gallopRight(a[cursor2], tmp, cursor1, len1, 0, c); - if (count1 != 0) { - System.arraycopy(tmp, cursor1, a, dest, count1); - dest += count1; - cursor1 += count1; - len1 -= count1; - if (len1 <= 1) // len1 == 1 || len1 == 0 - break outer; - } - a[dest++] = a[cursor2++]; - if (--len2 == 0) - break outer; - - count2 = gallopLeft(tmp[cursor1], a, cursor2, len2, 0, c); - if (count2 != 0) { - System.arraycopy(a, cursor2, a, dest, count2); - dest += count2; - cursor2 += count2; - len2 -= count2; - if (len2 == 0) - break outer; - } - a[dest++] = tmp[cursor1++]; - if (--len1 == 1) - break outer; - minGallop--; - } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); - if (minGallop < 0) - minGallop = 0; - minGallop += 2; // Penalize for leaving gallop mode - } // End of "outer" loop - this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field - - if (len1 == 1) { - if (DEBUG) - assert len2 > 0; - System.arraycopy(a, cursor2, a, dest, len2); - a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge - } else if (len1 == 0) { - throw new IllegalArgumentException("Comparison method violates its general contract!"); - } else { - if (DEBUG) - assert len2 == 0; - if (DEBUG) - assert len1 > 1; - System.arraycopy(tmp, cursor1, a, dest, len1); - } - } - - /** - * Like mergeLo, except that this method should be called only if len1 >= - * len2; mergeLo should be called if len1 <= len2. - * (Either method may be called if len1 == len2.) - * - * @param base1 index of first element in first run to be merged - * @param len1 length of first run to be merged (must be > 0) - * @param base2 index of first element in second run to be merged (must be - * aBase + aLen) - * @param len2 length of second run to be merged (must be > 0) - */ - private void mergeHi(int base1, int len1, int base2, int len2) { - if (DEBUG) - assert len1 > 0 && len2 > 0 && base1 + len1 == base2; - - // Copy second run into temp array - T[] a = this.a; // For performance - T[] tmp = ensureCapacity(len2); - System.arraycopy(a, base2, tmp, 0, len2); - - int cursor1 = base1 + len1 - 1; // Indexes into a - int cursor2 = len2 - 1; // Indexes into tmp array - int dest = base2 + len2 - 1; // Indexes into a - - // Move last element of first run and deal with degenerate cases - a[dest--] = a[cursor1--]; - if (--len1 == 0) { - System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); - return; - } - if (len2 == 1) { - dest -= len1; - cursor1 -= len1; - System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); - a[dest] = tmp[cursor2]; - return; - } - - Comparator c = this.c; // Use local variable for performance - int minGallop = this.minGallop; // " " " " " - outer: while (true) { - int count1 = 0; // Number of times in a row that first run won - int count2 = 0; // Number of times in a row that second run won - - /* - * Do the straightforward thing until (if ever) one run appears to - * win consistently. - */ - do { - if (DEBUG) - assert len1 > 0 && len2 > 1; - if (c.compare(tmp[cursor2], a[cursor1]) < 0) { - a[dest--] = a[cursor1--]; - count1++; - count2 = 0; - if (--len1 == 0) - break outer; - } else { - a[dest--] = tmp[cursor2--]; - count2++; - count1 = 0; - if (--len2 == 1) - break outer; - } - } while ((count1 | count2) < minGallop); - - /* - * One run is winning so consistently that galloping may be a huge - * win. So try that, and continue galloping until (if - * ever) neither run appears to be winning consistently anymore. - */ - do { - if (DEBUG) - assert len1 > 0 && len2 > 1; - count1 = len1 - gallopRight(tmp[cursor2], a, base1, len1, len1 - 1, c); - if (count1 != 0) { - dest -= count1; - cursor1 -= count1; - len1 -= count1; - System.arraycopy(a, cursor1 + 1, a, dest + 1, count1); - if (len1 == 0) - break outer; - } - a[dest--] = tmp[cursor2--]; - if (--len2 == 1) - break outer; - - count2 = len2 - gallopLeft(a[cursor1], tmp, 0, len2, len2 - 1, c); - if (count2 != 0) { - dest -= count2; - cursor2 -= count2; - len2 -= count2; - System.arraycopy(tmp, cursor2 + 1, a, dest + 1, count2); - if (len2 <= 1) // len2 == 1 || len2 == 0 - break outer; - } - a[dest--] = a[cursor1--]; - if (--len1 == 0) - break outer; - minGallop--; - } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); - if (minGallop < 0) - minGallop = 0; - minGallop += 2; // Penalize for leaving gallop mode - } // End of "outer" loop - this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field - - if (len2 == 1) { - if (DEBUG) - assert len1 > 0; - dest -= len1; - cursor1 -= len1; - System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); - a[dest] = tmp[cursor2]; // Move first elt of run2 to front of merge - } else if (len2 == 0) { - throw new IllegalArgumentException("Comparison method violates its general contract!"); - } else { - if (DEBUG) - assert len1 == 0; - if (DEBUG) - assert len2 > 0; - System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); - } - } - - /** - * Ensures that the external array tmp has at least the specified number of - * elements, increasing its size if necessary. The - * size increases exponentially to ensure amortized linear time complexity. - * - * @param minCapacity the minimum required capacity of the tmp array - * @return tmp, whether or not it grew - */ - private T[] ensureCapacity(int minCapacity) { - tmpCount = Math.max(tmpCount, minCapacity); - if (tmp.length < minCapacity) { - // Compute smallest power of 2 > minCapacity - int newSize = minCapacity; - newSize |= newSize >> 1; - newSize |= newSize >> 2; - newSize |= newSize >> 4; - newSize |= newSize >> 8; - newSize |= newSize >> 16; - newSize++; - - if (newSize < 0) // Not bloody likely! - newSize = minCapacity; - else - newSize = Math.min(newSize, a.length >>> 1); - - @SuppressWarnings("unchecked") - T[] newArray = (T[]) new Object[newSize]; - tmp = newArray; - } - return tmp; - } - - /** - * Checks that fromIndex and toIndex are in range, and throws an appropriate - * exception if they aren't. - * - * @param arrayLen the length of the array - * @param fromIndex the index of the first element of the range - * @param toIndex the index after the last element of the range - * @throws IllegalArgumentException if fromIndex > toIndex - * @throws ArrayIndexOutOfBoundsException if fromIndex < 0 or toIndex > - * arrayLen - */ - private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) { - if (fromIndex > toIndex) - throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex - + ")"); - if (fromIndex < 0) - throw new ArrayIndexOutOfBoundsException(fromIndex); - if (toIndex > arrayLen) - throw new ArrayIndexOutOfBoundsException(toIndex); - } -} +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" + * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +package org.oscim.utils; + +import java.util.Arrays; +import java.util.Comparator; + +/** + * A stable, adaptive, iterative mergesort that requires far fewer than n lg(n) + * comparisons when running on partially sorted + * arrays, while offering performance comparable to a traditional mergesort when + * run on random arrays. Like all proper mergesorts, + * this sort is stable and runs O(n log n) time (worst case). In the worst case, + * this sort requires temporary storage space for + * n/2 object references; in the best case, it requires only a small constant + * amount of space. + * + * This implementation was adapted from Tim Peters's list sort for Python, which + * is described in detail here: + * + * http://svn.python.org/projects/python/trunk/Objects/listsort.txt + * + * Tim's C code may be found here: + * + * http://svn.python.org/projects/python/trunk/Objects/listobject.c + * + * The underlying techniques are described in this paper (and may have even + * earlier origins): + * + * "Optimistic Sorting and Information Theoretic Complexity" Peter McIlroy SODA + * (Fourth Annual ACM-SIAM Symposium on Discrete + * Algorithms), pp 467-474, Austin, Texas, 25-27 January 1993. + * + * While the API to this class consists solely of static methods, it is + * (privately) instantiable; a TimSort instance holds the + * state of an ongoing sort, assuming the input array is large enough to warrant + * the full-blown TimSort. Small arrays are sorted + * in place, using a binary insertion sort. + */ +public class TimSort { + /** + * This is the minimum sized sequence that will be merged. Shorter sequences + * will be lengthened by calling binarySort. If the + * entire array is less than this length, no merges will be performed. + * + * This constant should be a power of two. It was 64 in Tim Peter's C + * implementation, but 32 was empirically determined to work + * better in this implementation. In the unlikely event that you set this + * constant to be a number that's not a power of two, + * you'll need to change the {@link #minRunLength} computation. + * + * If you decrease this constant, you must change the stackLen computation + * in the TimSort constructor, or you risk an + * ArrayOutOfBounds exception. See listsort.txt for a discussion of the + * minimum stack length required as a function of the + * length of the array being sorted and the minimum merge sequence length. + */ + private static final int MIN_MERGE = 32; + + /** The array being sorted. */ + private T[] a; + + /** The comparator for this sort. */ + private Comparator c; + + /** + * When we get into galloping mode, we stay there until both runs win less + * often than MIN_GALLOP consecutive times. + */ + private static final int MIN_GALLOP = 7; + + /** + * This controls when we get *into* galloping mode. It is initialized to + * MIN_GALLOP. The mergeLo and mergeHi methods nudge it + * higher for random data, and lower for highly structured data. + */ + private int minGallop = MIN_GALLOP; + + /** + * Maximum initial size of tmp array, which is used for merging. The array + * can grow to accommodate demand. + * + * Unlike Tim's original C version, we do not allocate this much storage + * when sorting smaller arrays. This change was required + * for performance. + */ + private static final int INITIAL_TMP_STORAGE_LENGTH = 256; + + /** Temp storage for merges. */ + private T[] tmp; // Actual runtime type will be Object[], regardless of T + private int tmpCount; + + /** + * A stack of pending runs yet to be merged. Run i starts at address base[i] + * and extends for len[i] elements. It's always true + * (so long as the indices are in bounds) that: + * + * runBase[i] + runLen[i] == runBase[i + 1] + * + * so we could cut the storage for this, but it's a minor amount, and + * keeping all the info explicit simplifies the code. + */ + private int stackSize = 0; // Number of pending runs on stack + private final int[] runBase; + private final int[] runLen; + + /** + * Asserts have been placed in if-statements for performace. To enable them, + * set this field to true and enable them in VM with + * a command line flag. If you modify this class, please do test the + * asserts! + */ + private static final boolean DEBUG = false; + + @SuppressWarnings("unchecked") + public TimSort() { + tmp = (T[]) new Object[INITIAL_TMP_STORAGE_LENGTH]; + runBase = new int[40]; + runLen = new int[40]; + } + + public void doSort(T[] a, Comparator c, int lo, int hi) { + stackSize = 0; + rangeCheck(a.length, lo, hi); + int nRemaining = hi - lo; + if (nRemaining < 2) + return; // Arrays of size 0 and 1 are always sorted + + // If array is small, do a "mini-TimSort" with no merges + if (nRemaining < MIN_MERGE) { + int initRunLen = countRunAndMakeAscending(a, lo, hi, c); + binarySort(a, lo, hi, lo + initRunLen, c); + return; + } + + this.a = a; + this.c = c; + tmpCount = 0; + + /** + * March over the array once, left to right, finding natural runs, + * extending short natural runs to minRun elements, and + * merging runs to maintain stack invariant. + */ + int minRun = minRunLength(nRemaining); + do { + // Identify next run + int runLen = countRunAndMakeAscending(a, lo, hi, c); + + // If run is short, extend to min(minRun, nRemaining) + if (runLen < minRun) { + int force = nRemaining <= minRun ? nRemaining : minRun; + binarySort(a, lo, lo + force, lo + runLen, c); + runLen = force; + } + + // Push run onto pending-run stack, and maybe merge + pushRun(lo, runLen); + mergeCollapse(); + + // Advance to find next run + lo += runLen; + nRemaining -= runLen; + } while (nRemaining != 0); + + // Merge all remaining runs to complete sort + if (DEBUG) + assert lo == hi; + mergeForceCollapse(); + if (DEBUG) + assert stackSize == 1; + + this.a = null; + this.c = null; + T[] tmp = this.tmp; + for (int i = 0, n = tmpCount; i < n; i++) + tmp[i] = null; + } + + /** + * Creates a TimSort instance to maintain the state of an ongoing sort. + * + * @param a the array to be sorted + * @param c the comparator to determine the order of the sort + */ + private TimSort(T[] a, Comparator c) { + this.a = a; + this.c = c; + + // Allocate temp storage (which may be increased later if necessary) + int len = a.length; + @SuppressWarnings("unchecked") + T[] newArray = (T[]) new Object[len < 2 * INITIAL_TMP_STORAGE_LENGTH ? len >>> 1 + : INITIAL_TMP_STORAGE_LENGTH]; + tmp = newArray; + + /* + * Allocate runs-to-be-merged stack (which cannot be expanded). The + * stack length requirements are described in listsort.txt. + * The C version always uses the same stack length (85), but this was + * measured to be too expensive when sorting "mid-sized" + * arrays (e.g., 100 elements) in Java. Therefore, we use smaller (but + * sufficiently large) stack lengths for smaller arrays. + * The "magic numbers" in the computation below must be changed if + * MIN_MERGE is decreased. See the MIN_MERGE declaration + * above for more information. + */ + int stackLen = (len < 120 ? 5 : len < 1542 ? 10 : len < 119151 ? 19 : 40); + runBase = new int[stackLen]; + runLen = new int[stackLen]; + } + + /* + * The next two methods (which are package private and static) constitute + * the entire API of this class. Each of these methods + * obeys the contract of the public method with the same signature in + * java.util.Arrays. + */ + + static void sort(T[] a, Comparator c) { + sort(a, 0, a.length, c); + } + + static void sort(T[] a, int lo, int hi, Comparator c) { + if (c == null) { + Arrays.sort(a, lo, hi); + return; + } + + rangeCheck(a.length, lo, hi); + int nRemaining = hi - lo; + if (nRemaining < 2) + return; // Arrays of size 0 and 1 are always sorted + + // If array is small, do a "mini-TimSort" with no merges + if (nRemaining < MIN_MERGE) { + int initRunLen = countRunAndMakeAscending(a, lo, hi, c); + binarySort(a, lo, hi, lo + initRunLen, c); + return; + } + + /** + * March over the array once, left to right, finding natural runs, + * extending short natural runs to minRun elements, and + * merging runs to maintain stack invariant. + */ + TimSort ts = new TimSort(a, c); + int minRun = minRunLength(nRemaining); + do { + // Identify next run + int runLen = countRunAndMakeAscending(a, lo, hi, c); + + // If run is short, extend to min(minRun, nRemaining) + if (runLen < minRun) { + int force = nRemaining <= minRun ? nRemaining : minRun; + binarySort(a, lo, lo + force, lo + runLen, c); + runLen = force; + } + + // Push run onto pending-run stack, and maybe merge + ts.pushRun(lo, runLen); + ts.mergeCollapse(); + + // Advance to find next run + lo += runLen; + nRemaining -= runLen; + } while (nRemaining != 0); + + // Merge all remaining runs to complete sort + if (DEBUG) + assert lo == hi; + ts.mergeForceCollapse(); + if (DEBUG) + assert ts.stackSize == 1; + } + + /** + * Sorts the specified portion of the specified array using a binary + * insertion sort. This is the best method for sorting small + * numbers of elements. It requires O(n log n) compares, but O(n^2) data + * movement (worst case). + * + * If the initial part of the specified range is already sorted, this method + * can take advantage of it: the method assumes that + * the elements from index {@code lo}, inclusive, to {@code start}, + * exclusive + * are already sorted. + * + * @param a the array in which a range is to be sorted + * @param lo the index of the first element in the range to be sorted + * @param hi the index after the last element in the range to be sorted + * @param start the index of the first element in the range that is not + * already known to be sorted (@code lo <= start <= hi} + * @param c comparator to used for the sort + */ + @SuppressWarnings("fallthrough") + private static void binarySort(T[] a, int lo, int hi, int start, Comparator c) { + if (DEBUG) + assert lo <= start && start <= hi; + if (start == lo) + start++; + for (; start < hi; start++) { + T pivot = a[start]; + + // Set left (and right) to the index where a[start] (pivot) belongs + int left = lo; + int right = start; + if (DEBUG) + assert left <= right; + /* + * Invariants: pivot >= all in [lo, left). pivot < all in [right, + * start). + */ + while (left < right) { + int mid = (left + right) >>> 1; + if (c.compare(pivot, a[mid]) < 0) + right = mid; + else + left = mid + 1; + } + if (DEBUG) + assert left == right; + + /* + * The invariants still hold: pivot >= all in [lo, left) and pivot < + * all in [left, start), so pivot belongs at left. Note + * that if there are elements equal to pivot, left points to the + * first slot after them -- that's why this sort is stable. + * Slide elements over to make room to make room for pivot. + */ + int n = start - left; // The number of elements to move + // Switch is just an optimization for arraycopy in default case + switch (n) { + case 2: + a[left + 2] = a[left + 1]; + case 1: + a[left + 1] = a[left]; + break; + default: + System.arraycopy(a, left, a, left + 1, n); + } + a[left] = pivot; + } + } + + /** + * Returns the length of the run beginning at the specified position in the + * specified array and reverses the run if it is + * descending (ensuring that the run will always be ascending when the + * method returns). + * + * A run is the longest ascending sequence with: + * + * a[lo] <= a[lo + 1] <= a[lo + 2] <= ... + * + * or the longest descending sequence with: + * + * a[lo] > a[lo + 1] > a[lo + 2] > ... + * + * For its intended use in a stable mergesort, the strictness of the + * definition of "descending" is needed so that the call can + * safely reverse a descending sequence without violating stability. + * + * @param a the array in which a run is to be counted and possibly reversed + * @param lo index of the first element in the run + * @param hi index after the last element that may be contained in the run. + * It is required that @code{lo < hi}. + * @param c the comparator to used for the sort + * @return the length of the run beginning at the specified position in the + * specified array + */ + private static int countRunAndMakeAscending(T[] a, int lo, int hi, Comparator c) { + if (DEBUG) + assert lo < hi; + int runHi = lo + 1; + if (runHi == hi) + return 1; + + // Find end of run, and reverse range if descending + if (c.compare(a[runHi++], a[lo]) < 0) { // Descending + while (runHi < hi && c.compare(a[runHi], a[runHi - 1]) < 0) + runHi++; + reverseRange(a, lo, runHi); + } else { // Ascending + while (runHi < hi && c.compare(a[runHi], a[runHi - 1]) >= 0) + runHi++; + } + + return runHi - lo; + } + + /** + * Reverse the specified range of the specified array. + * + * @param a the array in which a range is to be reversed + * @param lo the index of the first element in the range to be reversed + * @param hi the index after the last element in the range to be reversed + */ + private static void reverseRange(Object[] a, int lo, int hi) { + hi--; + while (lo < hi) { + Object t = a[lo]; + a[lo++] = a[hi]; + a[hi--] = t; + } + } + + /** + * Returns the minimum acceptable run length for an array of the specified + * length. Natural runs shorter than this will be + * extended with {@link #binarySort}. + * + * Roughly speaking, the computation is: + * + * If n < MIN_MERGE, return n (it's too small to bother with fancy stuff). + * Else if n is an exact power of 2, return + * MIN_MERGE/2. Else return an int k, MIN_MERGE/2 <= k <= MIN_MERGE, such + * that n/k is close to, but strictly less than, an + * exact power of 2. + * + * For the rationale, see listsort.txt. + * + * @param n the length of the array to be sorted + * @return the length of the minimum run to be merged + */ + private static int minRunLength(int n) { + if (DEBUG) + assert n >= 0; + int r = 0; // Becomes 1 if any 1 bits are shifted off + while (n >= MIN_MERGE) { + r |= (n & 1); + n >>= 1; + } + return n + r; + } + + /** + * Pushes the specified run onto the pending-run stack. + * + * @param runBase index of the first element in the run + * @param runLen the number of elements in the run + */ + private void pushRun(int runBase, int runLen) { + this.runBase[stackSize] = runBase; + this.runLen[stackSize] = runLen; + stackSize++; + } + + /** + * Examines the stack of runs waiting to be merged and merges adjacent runs + * until the stack invariants are reestablished: + * + * 1. runLen[i - 3] > runLen[i - 2] + runLen[i - 1] 2. runLen[i - 2] > + * runLen[i - 1] + * + * This method is called each time a new run is pushed onto the stack, so + * the invariants are guaranteed to hold for i < + * stackSize upon entry to the method. + */ + private void mergeCollapse() { + while (stackSize > 1) { + int n = stackSize - 2; + if (n > 0 && runLen[n - 1] <= runLen[n] + runLen[n + 1]) { + if (runLen[n - 1] < runLen[n + 1]) + n--; + mergeAt(n); + } else if (runLen[n] <= runLen[n + 1]) { + mergeAt(n); + } else { + break; // Invariant is established + } + } + } + + /** + * Merges all runs on the stack until only one remains. This method is + * called once, to complete the sort. + */ + private void mergeForceCollapse() { + while (stackSize > 1) { + int n = stackSize - 2; + if (n > 0 && runLen[n - 1] < runLen[n + 1]) + n--; + mergeAt(n); + } + } + + /** + * Merges the two runs at stack indices i and i+1. Run i must be the + * penultimate or antepenultimate run on the stack. In other + * words, i must be equal to stackSize-2 or stackSize-3. + * + * @param i stack index of the first of the two runs to merge + */ + private void mergeAt(int i) { + if (DEBUG) + assert stackSize >= 2; + if (DEBUG) + assert i >= 0; + if (DEBUG) + assert i == stackSize - 2 || i == stackSize - 3; + + int base1 = runBase[i]; + int len1 = runLen[i]; + int base2 = runBase[i + 1]; + int len2 = runLen[i + 1]; + if (DEBUG) + assert len1 > 0 && len2 > 0; + if (DEBUG) + assert base1 + len1 == base2; + + /* + * Record the length of the combined runs; if i is the 3rd-last run now, + * also slide over the last run (which isn't involved + * in this merge). The current run (i+1) goes away in any case. + */ + runLen[i] = len1 + len2; + if (i == stackSize - 3) { + runBase[i + 1] = runBase[i + 2]; + runLen[i + 1] = runLen[i + 2]; + } + stackSize--; + + /* + * Find where the first element of run2 goes in run1. Prior elements in + * run1 can be ignored (because they're already in + * place). + */ + int k = gallopRight(a[base2], a, base1, len1, 0, c); + if (DEBUG) + assert k >= 0; + base1 += k; + len1 -= k; + if (len1 == 0) + return; + + /* + * Find where the last element of run1 goes in run2. Subsequent elements + * in run2 can be ignored (because they're already in + * place). + */ + len2 = gallopLeft(a[base1 + len1 - 1], a, base2, len2, len2 - 1, c); + if (DEBUG) + assert len2 >= 0; + if (len2 == 0) + return; + + // Merge remaining runs, using tmp array with min(len1, len2) elements + if (len1 <= len2) + mergeLo(base1, len1, base2, len2); + else + mergeHi(base1, len1, base2, len2); + } + + /** + * Locates the position at which to insert the specified key into the + * specified sorted range; if the range contains an element + * equal to key, returns the index of the leftmost equal element. + * + * @param key the key whose insertion point to search for + * @param a the array in which to search + * @param base the index of the first element in the range + * @param len the length of the range; must be > 0 + * @param hint the index at which to begin the search, 0 <= hint < n. The + * closer hint is to the result, the faster this method + * will run. + * @param c the comparator used to order the range, and to search + * @return the int k, 0 <= k <= n such that a[b + k - 1] < key <= a[b + k], + * pretending that a[b - 1] is minus infinity and a[b + * + n] is infinity. In other words, key belongs at index b + k; or + * in other words, the first k elements of a should + * precede key, and the last n - k should follow it. + */ + private static int gallopLeft(T key, T[] a, int base, int len, int hint, + Comparator c) { + if (DEBUG) + assert len > 0 && hint >= 0 && hint < len; + int lastOfs = 0; + int ofs = 1; + if (c.compare(key, a[base + hint]) > 0) { + // Gallop right until a[base+hint+lastOfs] < key <= a[base+hint+ofs] + int maxOfs = len - hint; + while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) > 0) { + lastOfs = ofs; + ofs = (ofs << 1) + 1; + if (ofs <= 0) // int overflow + ofs = maxOfs; + } + if (ofs > maxOfs) + ofs = maxOfs; + + // Make offsets relative to base + lastOfs += hint; + ofs += hint; + } else { // key <= a[base + hint] + // Gallop left until a[base+hint-ofs] < key <= a[base+hint-lastOfs] + final int maxOfs = hint + 1; + while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) <= 0) { + lastOfs = ofs; + ofs = (ofs << 1) + 1; + if (ofs <= 0) // int overflow + ofs = maxOfs; + } + if (ofs > maxOfs) + ofs = maxOfs; + + // Make offsets relative to base + int tmp = lastOfs; + lastOfs = hint - ofs; + ofs = hint - tmp; + } + if (DEBUG) + assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; + + /* + * Now a[base+lastOfs] < key <= a[base+ofs], so key belongs somewhere to + * the right of lastOfs but no farther right than ofs. + * Do a binary search, with invariant a[base + lastOfs - 1] < key <= + * a[base + ofs]. + */ + lastOfs++; + while (lastOfs < ofs) { + int m = lastOfs + ((ofs - lastOfs) >>> 1); + + if (c.compare(key, a[base + m]) > 0) + lastOfs = m + 1; // a[base + m] < key + else + ofs = m; // key <= a[base + m] + } + if (DEBUG) + assert lastOfs == ofs; // so a[base + ofs - 1] < key <= a[base + ofs] + return ofs; + } + + /** + * Like gallopLeft, except that if the range contains an element equal to + * key, gallopRight returns the index after the + * rightmost equal element. + * + * @param key the key whose insertion point to search for + * @param a the array in which to search + * @param base the index of the first element in the range + * @param len the length of the range; must be > 0 + * @param hint the index at which to begin the search, 0 <= hint < n. The + * closer hint is to the result, the faster this method + * will run. + * @param c the comparator used to order the range, and to search + * @return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k] + */ + private static int gallopRight(T key, T[] a, int base, int len, int hint, + Comparator c) { + if (DEBUG) + assert len > 0 && hint >= 0 && hint < len; + + int ofs = 1; + int lastOfs = 0; + if (c.compare(key, a[base + hint]) < 0) { + // Gallop left until a[b+hint - ofs] <= key < a[b+hint - lastOfs] + int maxOfs = hint + 1; + while (ofs < maxOfs && c.compare(key, a[base + hint - ofs]) < 0) { + lastOfs = ofs; + ofs = (ofs << 1) + 1; + if (ofs <= 0) // int overflow + ofs = maxOfs; + } + if (ofs > maxOfs) + ofs = maxOfs; + + // Make offsets relative to b + int tmp = lastOfs; + lastOfs = hint - ofs; + ofs = hint - tmp; + } else { // a[b + hint] <= key + // Gallop right until a[b+hint + lastOfs] <= key < a[b+hint + ofs] + int maxOfs = len - hint; + while (ofs < maxOfs && c.compare(key, a[base + hint + ofs]) >= 0) { + lastOfs = ofs; + ofs = (ofs << 1) + 1; + if (ofs <= 0) // int overflow + ofs = maxOfs; + } + if (ofs > maxOfs) + ofs = maxOfs; + + // Make offsets relative to b + lastOfs += hint; + ofs += hint; + } + if (DEBUG) + assert -1 <= lastOfs && lastOfs < ofs && ofs <= len; + + /* + * Now a[b + lastOfs] <= key < a[b + ofs], so key belongs somewhere to + * the right of lastOfs but no farther right than ofs. + * Do a binary search, with invariant a[b + lastOfs - 1] <= key < a[b + + * ofs]. + */ + lastOfs++; + while (lastOfs < ofs) { + int m = lastOfs + ((ofs - lastOfs) >>> 1); + + if (c.compare(key, a[base + m]) < 0) + ofs = m; // key < a[b + m] + else + lastOfs = m + 1; // a[b + m] <= key + } + if (DEBUG) + assert lastOfs == ofs; // so a[b + ofs - 1] <= key < a[b + ofs] + return ofs; + } + + /** + * Merges two adjacent runs in place, in a stable fashion. The first element + * of the first run must be greater than the first + * element of the second run (a[base1] > a[base2]), and the last element of + * the first run (a[base1 + len1-1]) must be greater + * than all elements of the second run. + * + * For performance, this method should be called only when len1 <= len2; its + * twin, mergeHi should be called if len1 >= len2. + * (Either method may be called if len1 == len2.) + * + * @param base1 index of first element in first run to be merged + * @param len1 length of first run to be merged (must be > 0) + * @param base2 index of first element in second run to be merged (must be + * aBase + aLen) + * @param len2 length of second run to be merged (must be > 0) + */ + private void mergeLo(int base1, int len1, int base2, int len2) { + if (DEBUG) + assert len1 > 0 && len2 > 0 && base1 + len1 == base2; + + // Copy first run into temp array + T[] a = this.a; // For performance + T[] tmp = ensureCapacity(len1); + System.arraycopy(a, base1, tmp, 0, len1); + + int cursor1 = 0; // Indexes into tmp array + int cursor2 = base2; // Indexes int a + int dest = base1; // Indexes int a + + // Move first element of second run and deal with degenerate cases + a[dest++] = a[cursor2++]; + if (--len2 == 0) { + System.arraycopy(tmp, cursor1, a, dest, len1); + return; + } + if (len1 == 1) { + System.arraycopy(a, cursor2, a, dest, len2); + a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge + return; + } + + Comparator c = this.c; // Use local variable for performance + int minGallop = this.minGallop; // " " " " " + outer: while (true) { + int count1 = 0; // Number of times in a row that first run won + int count2 = 0; // Number of times in a row that second run won + + /* + * Do the straightforward thing until (if ever) one run starts + * winning consistently. + */ + do { + if (DEBUG) + assert len1 > 1 && len2 > 0; + if (c.compare(a[cursor2], tmp[cursor1]) < 0) { + a[dest++] = a[cursor2++]; + count2++; + count1 = 0; + if (--len2 == 0) + break outer; + } else { + a[dest++] = tmp[cursor1++]; + count1++; + count2 = 0; + if (--len1 == 1) + break outer; + } + } while ((count1 | count2) < minGallop); + + /* + * One run is winning so consistently that galloping may be a huge + * win. So try that, and continue galloping until (if + * ever) neither run appears to be winning consistently anymore. + */ + do { + if (DEBUG) + assert len1 > 1 && len2 > 0; + count1 = gallopRight(a[cursor2], tmp, cursor1, len1, 0, c); + if (count1 != 0) { + System.arraycopy(tmp, cursor1, a, dest, count1); + dest += count1; + cursor1 += count1; + len1 -= count1; + if (len1 <= 1) // len1 == 1 || len1 == 0 + break outer; + } + a[dest++] = a[cursor2++]; + if (--len2 == 0) + break outer; + + count2 = gallopLeft(tmp[cursor1], a, cursor2, len2, 0, c); + if (count2 != 0) { + System.arraycopy(a, cursor2, a, dest, count2); + dest += count2; + cursor2 += count2; + len2 -= count2; + if (len2 == 0) + break outer; + } + a[dest++] = tmp[cursor1++]; + if (--len1 == 1) + break outer; + minGallop--; + } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); + if (minGallop < 0) + minGallop = 0; + minGallop += 2; // Penalize for leaving gallop mode + } // End of "outer" loop + this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field + + if (len1 == 1) { + if (DEBUG) + assert len2 > 0; + System.arraycopy(a, cursor2, a, dest, len2); + a[dest + len2] = tmp[cursor1]; // Last elt of run 1 to end of merge + } else if (len1 == 0) { + throw new IllegalArgumentException("Comparison method violates its general contract!"); + } else { + if (DEBUG) + assert len2 == 0; + if (DEBUG) + assert len1 > 1; + System.arraycopy(tmp, cursor1, a, dest, len1); + } + } + + /** + * Like mergeLo, except that this method should be called only if len1 >= + * len2; mergeLo should be called if len1 <= len2. + * (Either method may be called if len1 == len2.) + * + * @param base1 index of first element in first run to be merged + * @param len1 length of first run to be merged (must be > 0) + * @param base2 index of first element in second run to be merged (must be + * aBase + aLen) + * @param len2 length of second run to be merged (must be > 0) + */ + private void mergeHi(int base1, int len1, int base2, int len2) { + if (DEBUG) + assert len1 > 0 && len2 > 0 && base1 + len1 == base2; + + // Copy second run into temp array + T[] a = this.a; // For performance + T[] tmp = ensureCapacity(len2); + System.arraycopy(a, base2, tmp, 0, len2); + + int cursor1 = base1 + len1 - 1; // Indexes into a + int cursor2 = len2 - 1; // Indexes into tmp array + int dest = base2 + len2 - 1; // Indexes into a + + // Move last element of first run and deal with degenerate cases + a[dest--] = a[cursor1--]; + if (--len1 == 0) { + System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); + return; + } + if (len2 == 1) { + dest -= len1; + cursor1 -= len1; + System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); + a[dest] = tmp[cursor2]; + return; + } + + Comparator c = this.c; // Use local variable for performance + int minGallop = this.minGallop; // " " " " " + outer: while (true) { + int count1 = 0; // Number of times in a row that first run won + int count2 = 0; // Number of times in a row that second run won + + /* + * Do the straightforward thing until (if ever) one run appears to + * win consistently. + */ + do { + if (DEBUG) + assert len1 > 0 && len2 > 1; + if (c.compare(tmp[cursor2], a[cursor1]) < 0) { + a[dest--] = a[cursor1--]; + count1++; + count2 = 0; + if (--len1 == 0) + break outer; + } else { + a[dest--] = tmp[cursor2--]; + count2++; + count1 = 0; + if (--len2 == 1) + break outer; + } + } while ((count1 | count2) < minGallop); + + /* + * One run is winning so consistently that galloping may be a huge + * win. So try that, and continue galloping until (if + * ever) neither run appears to be winning consistently anymore. + */ + do { + if (DEBUG) + assert len1 > 0 && len2 > 1; + count1 = len1 - gallopRight(tmp[cursor2], a, base1, len1, len1 - 1, c); + if (count1 != 0) { + dest -= count1; + cursor1 -= count1; + len1 -= count1; + System.arraycopy(a, cursor1 + 1, a, dest + 1, count1); + if (len1 == 0) + break outer; + } + a[dest--] = tmp[cursor2--]; + if (--len2 == 1) + break outer; + + count2 = len2 - gallopLeft(a[cursor1], tmp, 0, len2, len2 - 1, c); + if (count2 != 0) { + dest -= count2; + cursor2 -= count2; + len2 -= count2; + System.arraycopy(tmp, cursor2 + 1, a, dest + 1, count2); + if (len2 <= 1) // len2 == 1 || len2 == 0 + break outer; + } + a[dest--] = a[cursor1--]; + if (--len1 == 0) + break outer; + minGallop--; + } while (count1 >= MIN_GALLOP | count2 >= MIN_GALLOP); + if (minGallop < 0) + minGallop = 0; + minGallop += 2; // Penalize for leaving gallop mode + } // End of "outer" loop + this.minGallop = minGallop < 1 ? 1 : minGallop; // Write back to field + + if (len2 == 1) { + if (DEBUG) + assert len1 > 0; + dest -= len1; + cursor1 -= len1; + System.arraycopy(a, cursor1 + 1, a, dest + 1, len1); + a[dest] = tmp[cursor2]; // Move first elt of run2 to front of merge + } else if (len2 == 0) { + throw new IllegalArgumentException("Comparison method violates its general contract!"); + } else { + if (DEBUG) + assert len1 == 0; + if (DEBUG) + assert len2 > 0; + System.arraycopy(tmp, 0, a, dest - (len2 - 1), len2); + } + } + + /** + * Ensures that the external array tmp has at least the specified number of + * elements, increasing its size if necessary. The + * size increases exponentially to ensure amortized linear time complexity. + * + * @param minCapacity the minimum required capacity of the tmp array + * @return tmp, whether or not it grew + */ + private T[] ensureCapacity(int minCapacity) { + tmpCount = Math.max(tmpCount, minCapacity); + if (tmp.length < minCapacity) { + // Compute smallest power of 2 > minCapacity + int newSize = minCapacity; + newSize |= newSize >> 1; + newSize |= newSize >> 2; + newSize |= newSize >> 4; + newSize |= newSize >> 8; + newSize |= newSize >> 16; + newSize++; + + if (newSize < 0) // Not bloody likely! + newSize = minCapacity; + else + newSize = Math.min(newSize, a.length >>> 1); + + @SuppressWarnings("unchecked") + T[] newArray = (T[]) new Object[newSize]; + tmp = newArray; + } + return tmp; + } + + /** + * Checks that fromIndex and toIndex are in range, and throws an appropriate + * exception if they aren't. + * + * @param arrayLen the length of the array + * @param fromIndex the index of the first element of the range + * @param toIndex the index after the last element of the range + * @throws IllegalArgumentException if fromIndex > toIndex + * @throws ArrayIndexOutOfBoundsException if fromIndex < 0 or toIndex > + * arrayLen + */ + private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) { + if (fromIndex > toIndex) + throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + + ")"); + if (fromIndex < 0) + throw new ArrayIndexOutOfBoundsException(fromIndex); + if (toIndex > arrayLen) + throw new ArrayIndexOutOfBoundsException(toIndex); + } +} diff --git a/vtm/src/org/oscim/utils/math/Interpolation.java b/vtm/src/org/oscim/utils/math/Interpolation.java index 48421235..7faaf094 100644 --- a/vtm/src/org/oscim/utils/math/Interpolation.java +++ b/vtm/src/org/oscim/utils/math/Interpolation.java @@ -1,420 +1,420 @@ -/******************************************************************************* - * Copyright 2011 Mario Zechner - * Copyright 2011 Nathan Sweet - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package org.oscim.utils.math; - - -/** - * Takes a linear value in the range of 0-1 and outputs a (usually) non-linear, - * interpolated value. - */ -public abstract class Interpolation { - /** @param a Alpha value between 0 and 1. */ - abstract public float apply(float a); - - /** @param a Alpha value between 0 and 1. */ - public float apply(float start, float end, float a) { - return start + (end - start) * apply(a); - } - - static public final Interpolation linear = new Interpolation() { - @Override - public float apply(float a) { - return a; - } - }; - - static public final Interpolation fade = new Interpolation() { - @Override - public float apply(float a) { - return MathUtils.clamp(a * a * a * (a * (a * 6 - 15) + 10), 0, 1); - } - }; - - static public final Pow pow2 = new Pow(2); - static public final PowIn pow2In = new PowIn(2); - static public final PowOut pow2Out = new PowOut(2); - - static public final Pow pow3 = new Pow(3); - static public final PowIn pow3In = new PowIn(3); - static public final PowOut pow3Out = new PowOut(3); - - static public final Pow pow4 = new Pow(4); - static public final PowIn pow4In = new PowIn(4); - static public final PowOut pow4Out = new PowOut(4); - - static public final Pow pow5 = new Pow(5); - static public final PowIn pow5In = new PowIn(5); - static public final PowOut pow5Out = new PowOut(5); - - static public final Interpolation sine = new Interpolation() { - @Override - public float apply(float a) { - return (1 - MathUtils.cos(a * MathUtils.PI)) / 2; - } - }; - - static public final Interpolation sineIn = new Interpolation() { - @Override - public float apply(float a) { - return 1 - MathUtils.cos(a * MathUtils.PI / 2); - } - }; - - static public final Interpolation sineOut = new Interpolation() { - @Override - public float apply(float a) { - return MathUtils.sin(a * MathUtils.PI / 2); - } - }; - - static public final Interpolation exp10 = new Exp(2, 10); - static public final Interpolation exp10In = new ExpIn(2, 10); - static public final Interpolation exp10Out = new ExpOut(2, 10); - - static public final Interpolation exp5 = new Exp(2, 5); - static public final Interpolation exp5In = new ExpIn(2, 5); - static public final Interpolation exp5Out = new ExpOut(2, 5); - - static public final Interpolation circle = new Interpolation() { - @Override - public float apply(float a) { - if (a <= 0.5f) { - a *= 2; - return (1 - (float) Math.sqrt(1 - a * a)) / 2; - } - a--; - a *= 2; - return ((float) Math.sqrt(1 - a * a) + 1) / 2; - } - }; - - static public final Interpolation circleIn = new Interpolation() { - @Override - public float apply(float a) { - return 1 - (float) Math.sqrt(1 - a * a); - } - }; - - static public final Interpolation circleOut = new Interpolation() { - @Override - public float apply(float a) { - a--; - return (float) Math.sqrt(1 - a * a); - } - }; - - static public final Elastic elastic = new Elastic(2, 10); - static public final Elastic elasticIn = new ElasticIn(2, 10); - static public final Elastic elasticOut = new ElasticOut(2, 10); - - static public final Interpolation swing = new Swing(1.5f); - static public final Interpolation swingIn = new SwingIn(2f); - static public final Interpolation swingOut = new SwingOut(2f); - - static public final Interpolation bounce = new Bounce(4); - static public final Interpolation bounceIn = new BounceIn(4); - static public final Interpolation bounceOut = new BounceOut(4); - - // - - static public class Pow extends Interpolation { - final int power; - - public Pow(int power) { - this.power = power; - } - - @Override - public float apply(float a) { - if (a <= 0.5f) - return (float) Math.pow(a * 2, power) / 2; - return (float) Math.pow((a - 1) * 2, power) / (power % 2 == 0 ? -2 : 2) + 1; - } - } - - static public class PowIn extends Pow { - public PowIn(int power) { - super(power); - } - - @Override - public float apply(float a) { - return (float) Math.pow(a, power); - } - } - - static public class PowOut extends Pow { - public PowOut(int power) { - super(power); - } - - @Override - public float apply(float a) { - return (float) Math.pow(a - 1, power) * (power % 2 == 0 ? -1 : 1) + 1; - } - } - - // - - static public class Exp extends Interpolation { - final float value, power, min, scale; - - public Exp(float value, float power) { - this.value = value; - this.power = power; - min = (float) Math.pow(value, -power); - scale = 1 / (1 - min); - } - - @Override - public float apply(float a) { - if (a <= 0.5f) - return ((float) Math.pow(value, power * (a * 2 - 1)) - min) * scale / 2; - return (2 - ((float) Math.pow(value, -power * (a * 2 - 1)) - min) * scale) / 2; - } - } - - static public class ExpIn extends Exp { - public ExpIn(float value, float power) { - super(value, power); - } - - @Override - public float apply(float a) { - return ((float) Math.pow(value, power * (a - 1)) - min) * scale; - } - } - - static public class ExpOut extends Exp { - public ExpOut(float value, float power) { - super(value, power); - } - - @Override - public float apply(float a) { - return 1 - ((float) Math.pow(value, -power * a) - min) * scale; - } - } - - // - - static public class Elastic extends Interpolation { - final float value, power; - - public Elastic(float value, float power) { - this.value = value; - this.power = power; - } - - @Override - public float apply(float a) { - if (a <= 0.5f) { - a *= 2; - return (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f - / 2; - } - a = 1 - a; - a *= 2; - return 1 - (float) Math.pow(value, power * (a - 1)) * MathUtils.sin((a) * 20) * 1.0955f - / 2; - } - } - - static public class ElasticIn extends Elastic { - public ElasticIn(float value, float power) { - super(value, power); - } - - @Override - public float apply(float a) { - return (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f; - } - } - - static public class ElasticOut extends Elastic { - public ElasticOut(float value, float power) { - super(value, power); - } - - @Override - public float apply(float a) { - a = 1 - a; - return (1 - (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f); - } - } - - // - - static public class Bounce extends BounceOut { - public Bounce(float[] widths, float[] heights) { - super(widths, heights); - } - - public Bounce(int bounces) { - super(bounces); - } - - private float out(float a) { - float test = a + widths[0] / 2; - if (test < widths[0]) - return test / (widths[0] / 2) - 1; - return super.apply(a); - } - - @Override - public float apply(float a) { - if (a <= 0.5f) - return (1 - out(1 - a * 2)) / 2; - return out(a * 2 - 1) / 2 + 0.5f; - } - } - - static public class BounceOut extends Interpolation { - final float[] widths, heights; - - public BounceOut(float[] widths, float[] heights) { - if (widths.length != heights.length) - throw new IllegalArgumentException("Must be the same number of widths and heights."); - this.widths = widths; - this.heights = heights; - } - - public BounceOut(int bounces) { - if (bounces < 2 || bounces > 5) - throw new IllegalArgumentException("bounces cannot be < 2 or > 5: " + bounces); - widths = new float[bounces]; - heights = new float[bounces]; - heights[0] = 1; - switch (bounces) { - case 2: - widths[0] = 0.6f; - widths[1] = 0.4f; - heights[1] = 0.33f; - break; - case 3: - widths[0] = 0.4f; - widths[1] = 0.4f; - widths[2] = 0.2f; - heights[1] = 0.33f; - heights[2] = 0.1f; - break; - case 4: - widths[0] = 0.34f; - widths[1] = 0.34f; - widths[2] = 0.2f; - widths[3] = 0.15f; - heights[1] = 0.26f; - heights[2] = 0.11f; - heights[3] = 0.03f; - break; - case 5: - widths[0] = 0.3f; - widths[1] = 0.3f; - widths[2] = 0.2f; - widths[3] = 0.1f; - widths[4] = 0.1f; - heights[1] = 0.45f; - heights[2] = 0.3f; - heights[3] = 0.15f; - heights[4] = 0.06f; - break; - } - widths[0] *= 2; - } - - @Override - public float apply(float a) { - a += widths[0] / 2; - float width = 0, height = 0; - for (int i = 0, n = widths.length; i < n; i++) { - width = widths[i]; - if (a <= width) { - height = heights[i]; - break; - } - a -= width; - } - a /= width; - float z = 4 / width * height * a; - return 1 - (z - z * a) * width; - } - } - - static public class BounceIn extends BounceOut { - public BounceIn(float[] widths, float[] heights) { - super(widths, heights); - } - - public BounceIn(int bounces) { - super(bounces); - } - - @Override - public float apply(float a) { - return 1 - super.apply(1 - a); - } - } - - // - - static public class Swing extends Interpolation { - private final float scale; - - public Swing(float scale) { - this.scale = scale * 2; - } - - @Override - public float apply(float a) { - if (a <= 0.5f) { - a *= 2; - return a * a * ((scale + 1) * a - scale) / 2; - } - a--; - a *= 2; - return a * a * ((scale + 1) * a + scale) / 2 + 1; - } - } - - static public class SwingOut extends Interpolation { - private final float scale; - - public SwingOut(float scale) { - this.scale = scale; - } - - @Override - public float apply(float a) { - a--; - return a * a * ((scale + 1) * a + scale) + 1; - } - } - - static public class SwingIn extends Interpolation { - private final float scale; - - public SwingIn(float scale) { - this.scale = scale; - } - - @Override - public float apply(float a) { - return a * a * ((scale + 1) * a - scale); - } - } -} +/******************************************************************************* + * Copyright 2011 Mario Zechner + * Copyright 2011 Nathan Sweet + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.utils.math; + + +/** + * Takes a linear value in the range of 0-1 and outputs a (usually) non-linear, + * interpolated value. + */ +public abstract class Interpolation { + /** @param a Alpha value between 0 and 1. */ + abstract public float apply(float a); + + /** @param a Alpha value between 0 and 1. */ + public float apply(float start, float end, float a) { + return start + (end - start) * apply(a); + } + + static public final Interpolation linear = new Interpolation() { + @Override + public float apply(float a) { + return a; + } + }; + + static public final Interpolation fade = new Interpolation() { + @Override + public float apply(float a) { + return MathUtils.clamp(a * a * a * (a * (a * 6 - 15) + 10), 0, 1); + } + }; + + static public final Pow pow2 = new Pow(2); + static public final PowIn pow2In = new PowIn(2); + static public final PowOut pow2Out = new PowOut(2); + + static public final Pow pow3 = new Pow(3); + static public final PowIn pow3In = new PowIn(3); + static public final PowOut pow3Out = new PowOut(3); + + static public final Pow pow4 = new Pow(4); + static public final PowIn pow4In = new PowIn(4); + static public final PowOut pow4Out = new PowOut(4); + + static public final Pow pow5 = new Pow(5); + static public final PowIn pow5In = new PowIn(5); + static public final PowOut pow5Out = new PowOut(5); + + static public final Interpolation sine = new Interpolation() { + @Override + public float apply(float a) { + return (1 - MathUtils.cos(a * MathUtils.PI)) / 2; + } + }; + + static public final Interpolation sineIn = new Interpolation() { + @Override + public float apply(float a) { + return 1 - MathUtils.cos(a * MathUtils.PI / 2); + } + }; + + static public final Interpolation sineOut = new Interpolation() { + @Override + public float apply(float a) { + return MathUtils.sin(a * MathUtils.PI / 2); + } + }; + + static public final Interpolation exp10 = new Exp(2, 10); + static public final Interpolation exp10In = new ExpIn(2, 10); + static public final Interpolation exp10Out = new ExpOut(2, 10); + + static public final Interpolation exp5 = new Exp(2, 5); + static public final Interpolation exp5In = new ExpIn(2, 5); + static public final Interpolation exp5Out = new ExpOut(2, 5); + + static public final Interpolation circle = new Interpolation() { + @Override + public float apply(float a) { + if (a <= 0.5f) { + a *= 2; + return (1 - (float) Math.sqrt(1 - a * a)) / 2; + } + a--; + a *= 2; + return ((float) Math.sqrt(1 - a * a) + 1) / 2; + } + }; + + static public final Interpolation circleIn = new Interpolation() { + @Override + public float apply(float a) { + return 1 - (float) Math.sqrt(1 - a * a); + } + }; + + static public final Interpolation circleOut = new Interpolation() { + @Override + public float apply(float a) { + a--; + return (float) Math.sqrt(1 - a * a); + } + }; + + static public final Elastic elastic = new Elastic(2, 10); + static public final Elastic elasticIn = new ElasticIn(2, 10); + static public final Elastic elasticOut = new ElasticOut(2, 10); + + static public final Interpolation swing = new Swing(1.5f); + static public final Interpolation swingIn = new SwingIn(2f); + static public final Interpolation swingOut = new SwingOut(2f); + + static public final Interpolation bounce = new Bounce(4); + static public final Interpolation bounceIn = new BounceIn(4); + static public final Interpolation bounceOut = new BounceOut(4); + + // + + static public class Pow extends Interpolation { + final int power; + + public Pow(int power) { + this.power = power; + } + + @Override + public float apply(float a) { + if (a <= 0.5f) + return (float) Math.pow(a * 2, power) / 2; + return (float) Math.pow((a - 1) * 2, power) / (power % 2 == 0 ? -2 : 2) + 1; + } + } + + static public class PowIn extends Pow { + public PowIn(int power) { + super(power); + } + + @Override + public float apply(float a) { + return (float) Math.pow(a, power); + } + } + + static public class PowOut extends Pow { + public PowOut(int power) { + super(power); + } + + @Override + public float apply(float a) { + return (float) Math.pow(a - 1, power) * (power % 2 == 0 ? -1 : 1) + 1; + } + } + + // + + static public class Exp extends Interpolation { + final float value, power, min, scale; + + public Exp(float value, float power) { + this.value = value; + this.power = power; + min = (float) Math.pow(value, -power); + scale = 1 / (1 - min); + } + + @Override + public float apply(float a) { + if (a <= 0.5f) + return ((float) Math.pow(value, power * (a * 2 - 1)) - min) * scale / 2; + return (2 - ((float) Math.pow(value, -power * (a * 2 - 1)) - min) * scale) / 2; + } + } + + static public class ExpIn extends Exp { + public ExpIn(float value, float power) { + super(value, power); + } + + @Override + public float apply(float a) { + return ((float) Math.pow(value, power * (a - 1)) - min) * scale; + } + } + + static public class ExpOut extends Exp { + public ExpOut(float value, float power) { + super(value, power); + } + + @Override + public float apply(float a) { + return 1 - ((float) Math.pow(value, -power * a) - min) * scale; + } + } + + // + + static public class Elastic extends Interpolation { + final float value, power; + + public Elastic(float value, float power) { + this.value = value; + this.power = power; + } + + @Override + public float apply(float a) { + if (a <= 0.5f) { + a *= 2; + return (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f + / 2; + } + a = 1 - a; + a *= 2; + return 1 - (float) Math.pow(value, power * (a - 1)) * MathUtils.sin((a) * 20) * 1.0955f + / 2; + } + } + + static public class ElasticIn extends Elastic { + public ElasticIn(float value, float power) { + super(value, power); + } + + @Override + public float apply(float a) { + return (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f; + } + } + + static public class ElasticOut extends Elastic { + public ElasticOut(float value, float power) { + super(value, power); + } + + @Override + public float apply(float a) { + a = 1 - a; + return (1 - (float) Math.pow(value, power * (a - 1)) * MathUtils.sin(a * 20) * 1.0955f); + } + } + + // + + static public class Bounce extends BounceOut { + public Bounce(float[] widths, float[] heights) { + super(widths, heights); + } + + public Bounce(int bounces) { + super(bounces); + } + + private float out(float a) { + float test = a + widths[0] / 2; + if (test < widths[0]) + return test / (widths[0] / 2) - 1; + return super.apply(a); + } + + @Override + public float apply(float a) { + if (a <= 0.5f) + return (1 - out(1 - a * 2)) / 2; + return out(a * 2 - 1) / 2 + 0.5f; + } + } + + static public class BounceOut extends Interpolation { + final float[] widths, heights; + + public BounceOut(float[] widths, float[] heights) { + if (widths.length != heights.length) + throw new IllegalArgumentException("Must be the same number of widths and heights."); + this.widths = widths; + this.heights = heights; + } + + public BounceOut(int bounces) { + if (bounces < 2 || bounces > 5) + throw new IllegalArgumentException("bounces cannot be < 2 or > 5: " + bounces); + widths = new float[bounces]; + heights = new float[bounces]; + heights[0] = 1; + switch (bounces) { + case 2: + widths[0] = 0.6f; + widths[1] = 0.4f; + heights[1] = 0.33f; + break; + case 3: + widths[0] = 0.4f; + widths[1] = 0.4f; + widths[2] = 0.2f; + heights[1] = 0.33f; + heights[2] = 0.1f; + break; + case 4: + widths[0] = 0.34f; + widths[1] = 0.34f; + widths[2] = 0.2f; + widths[3] = 0.15f; + heights[1] = 0.26f; + heights[2] = 0.11f; + heights[3] = 0.03f; + break; + case 5: + widths[0] = 0.3f; + widths[1] = 0.3f; + widths[2] = 0.2f; + widths[3] = 0.1f; + widths[4] = 0.1f; + heights[1] = 0.45f; + heights[2] = 0.3f; + heights[3] = 0.15f; + heights[4] = 0.06f; + break; + } + widths[0] *= 2; + } + + @Override + public float apply(float a) { + a += widths[0] / 2; + float width = 0, height = 0; + for (int i = 0, n = widths.length; i < n; i++) { + width = widths[i]; + if (a <= width) { + height = heights[i]; + break; + } + a -= width; + } + a /= width; + float z = 4 / width * height * a; + return 1 - (z - z * a) * width; + } + } + + static public class BounceIn extends BounceOut { + public BounceIn(float[] widths, float[] heights) { + super(widths, heights); + } + + public BounceIn(int bounces) { + super(bounces); + } + + @Override + public float apply(float a) { + return 1 - super.apply(1 - a); + } + } + + // + + static public class Swing extends Interpolation { + private final float scale; + + public Swing(float scale) { + this.scale = scale * 2; + } + + @Override + public float apply(float a) { + if (a <= 0.5f) { + a *= 2; + return a * a * ((scale + 1) * a - scale) / 2; + } + a--; + a *= 2; + return a * a * ((scale + 1) * a + scale) / 2 + 1; + } + } + + static public class SwingOut extends Interpolation { + private final float scale; + + public SwingOut(float scale) { + this.scale = scale; + } + + @Override + public float apply(float a) { + a--; + return a * a * ((scale + 1) * a + scale) + 1; + } + } + + static public class SwingIn extends Interpolation { + private final float scale; + + public SwingIn(float scale) { + this.scale = scale; + } + + @Override + public float apply(float a) { + return a * a * ((scale + 1) * a - scale); + } + } +} diff --git a/vtm/src/org/oscim/utils/math/MathUtils.java b/vtm/src/org/oscim/utils/math/MathUtils.java index a66f347f..4d1dd1fd 100644 --- a/vtm/src/org/oscim/utils/math/MathUtils.java +++ b/vtm/src/org/oscim/utils/math/MathUtils.java @@ -1,284 +1,284 @@ -/******************************************************************************* - * Copyright 2011 Mario Zechner - * Copyright 2011 Nathan Sweet - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ******************************************************************************/ - -package org.oscim.utils.math; - -import java.util.Random; - -/** - * Utility and fast math functions. - *

- * Thanks to Riven on JavaGaming.org for the basis of sin/cos/atan2/floor/ceil. - * - * @author Nathan Sweet - */ -public class MathUtils { - static public final float nanoToSec = 1 / 1000000000f; - - static public final float PI = 3.1415927f; - public static final float PI2 = PI * 2; - - static private final int SIN_BITS = 13; // Adjust for accuracy. - static private final int SIN_MASK = ~(-1 << SIN_BITS); - static private final int SIN_COUNT = SIN_MASK + 1; - - static private final float radFull = PI * 2; - static private final float degFull = 360; - static private final float radToIndex = SIN_COUNT / radFull; - static private final float degToIndex = SIN_COUNT / degFull; - - static public final float radiansToDegrees = 180f / PI; - static public final float radDeg = radiansToDegrees; - static public final float degreesToRadians = PI / 180; - static public final float degRad = degreesToRadians; - - static private class Sin { - static final float[] table = new float[SIN_COUNT]; - static { - for (int i = 0; i < SIN_COUNT; i++) - table[i] = (float) Math.sin((i + 0.5f) / SIN_COUNT * radFull); - for (int i = 0; i < 360; i += 90) - table[(int) (i * degToIndex) & SIN_MASK] = (float) Math.sin(i * degreesToRadians); - } - } - - static private class Cos { - static final float[] table = new float[SIN_COUNT]; - static { - for (int i = 0; i < SIN_COUNT; i++) - table[i] = (float) Math.cos((i + 0.5f) / SIN_COUNT * radFull); - for (int i = 0; i < 360; i += 90) - table[(int) (i * degToIndex) & SIN_MASK] = (float) Math.cos(i * degreesToRadians); - } - } - - /** Returns the sine in radians. */ - static public final float sin(float radians) { - return Sin.table[(int) (radians * radToIndex) & SIN_MASK]; - } - - /** Returns the cosine in radians. */ - static public final float cos(float radians) { - return Cos.table[(int) (radians * radToIndex) & SIN_MASK]; - } - - /** Returns the sine in radians. */ - static public final float sinDeg(float degrees) { - return Sin.table[(int) (degrees * degToIndex) & SIN_MASK]; - } - - /** Returns the cosine in radians. */ - static public final float cosDeg(float degrees) { - return Cos.table[(int) (degrees * degToIndex) & SIN_MASK]; - } - - // --- - - static private final int ATAN2_BITS = 7; // Adjust for accuracy. - static private final int ATAN2_BITS2 = ATAN2_BITS << 1; - static private final int ATAN2_MASK = ~(-1 << ATAN2_BITS2); - static private final int ATAN2_COUNT = ATAN2_MASK + 1; - static final int ATAN2_DIM = (int) Math.sqrt(ATAN2_COUNT); - static private final float INV_ATAN2_DIM_MINUS_1 = 1.0f / (ATAN2_DIM - 1); - - static private class Atan2 { - static final float[] table = new float[ATAN2_COUNT]; - static { - for (int i = 0; i < ATAN2_DIM; i++) { - for (int j = 0; j < ATAN2_DIM; j++) { - float x0 = (float) i / ATAN2_DIM; - float y0 = (float) j / ATAN2_DIM; - table[j * ATAN2_DIM + i] = (float) Math.atan2(y0, x0); - } - } - } - } - - /** Returns atan2 in radians from a lookup table. */ - static public final float atan2(float y, float x) { - float add, mul; - if (x < 0) { - if (y < 0) { - y = -y; - mul = 1; - } else - mul = -1; - x = -x; - add = -PI; - } else { - if (y < 0) { - y = -y; - mul = -1; - } else - mul = 1; - add = 0; - } - float invDiv = 1 / ((x < y ? y : x) * INV_ATAN2_DIM_MINUS_1); - int xi = (int) (x * invDiv); - int yi = (int) (y * invDiv); - return (Atan2.table[yi * ATAN2_DIM + xi] + add) * mul; - } - - // --- - - static public Random random = new Random(); - - /** - * Returns a random number between 0 (inclusive) and the specified value - * (inclusive). - */ - static public final int random(int range) { - return random.nextInt(range + 1); - } - - /** Returns a random number between start (inclusive) and end (inclusive). */ - static public final int random(int start, int end) { - return start + random.nextInt(end - start + 1); - } - - /** Returns a random boolean value. */ - static public final boolean randomBoolean() { - return random.nextBoolean(); - } - - /** Returns random number between 0.0 (inclusive) and 1.0 (exclusive). */ - static public final float random() { - return random.nextFloat(); - } - - /** - * Returns a random number between 0 (inclusive) and the specified value - * (exclusive). - */ - static public final float random(float range) { - return random.nextFloat() * range; - } - - /** Returns a random number between start (inclusive) and end (exclusive). */ - static public final float random(float start, float end) { - return start + random.nextFloat() * (end - start); - } - - // --- - - /** - * Returns the next power of two. Returns the specified value if the value - * is already a power of two. - */ - static public int nextPowerOfTwo(int value) { - if (value == 0) - return 1; - value--; - value |= value >> 1; - value |= value >> 2; - value |= value >> 4; - value |= value >> 8; - value |= value >> 16; - return value + 1; - } - - static public boolean isPowerOfTwo(int value) { - return value != 0 && (value & value - 1) == 0; - } - - // --- - - static public int clamp(int value, int min, int max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - } - - static public short clamp(short value, short min, short max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - } - - static public float clamp(float value, float min, float max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - } - - // --- - - static private final int BIG_ENOUGH_INT = 16 * 1024; - static private final double BIG_ENOUGH_FLOOR = BIG_ENOUGH_INT; - static private final double CEIL = 0.9999999; - static private final double BIG_ENOUGH_CEIL = Double.longBitsToDouble(Double.doubleToLongBits(BIG_ENOUGH_INT + 1) - 1); - static private final double BIG_ENOUGH_ROUND = BIG_ENOUGH_INT + 0.5f; - - /** - * Returns the largest integer less than or equal to the specified float. - * This method will only properly floor floats from - * -(2^14) to (Float.MAX_VALUE - 2^14). - */ - static public int floor(float x) { - return (int) (x + BIG_ENOUGH_FLOOR) - BIG_ENOUGH_INT; - } - - /** - * Returns the largest integer less than or equal to the specified float. - * This method will only properly floor floats that are - * positive. Note this method simply casts the float to int. - */ - static public int floorPositive(float x) { - return (int) x; - } - - /** - * Returns the smallest integer greater than or equal to the specified - * float. This method will only properly ceil floats from - * -(2^14) to (Float.MAX_VALUE - 2^14). - */ - static public int ceil(float x) { - return (int) (x + BIG_ENOUGH_CEIL) - BIG_ENOUGH_INT; - } - - /** - * Returns the smallest integer greater than or equal to the specified - * float. This method will only properly ceil floats that - * are positive. - */ - static public int ceilPositive(float x) { - return (int) (x + CEIL); - } - - /** - * Returns the closest integer to the specified float. This method will only - * properly round floats from -(2^14) to - * (Float.MAX_VALUE - 2^14). - */ - static public int round(float x) { - return (int) (x + BIG_ENOUGH_ROUND) - BIG_ENOUGH_INT; - } - - /** - * Returns the closest integer to the specified float. This method will only - * properly round floats that are positive. - */ - static public int roundPositive(float x) { - return (int) (x + 0.5f); - } -} +/******************************************************************************* + * Copyright 2011 Mario Zechner + * Copyright 2011 Nathan Sweet + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package org.oscim.utils.math; + +import java.util.Random; + +/** + * Utility and fast math functions. + *

+ * Thanks to Riven on JavaGaming.org for the basis of sin/cos/atan2/floor/ceil. + * + * @author Nathan Sweet + */ +public class MathUtils { + static public final float nanoToSec = 1 / 1000000000f; + + static public final float PI = 3.1415927f; + public static final float PI2 = PI * 2; + + static private final int SIN_BITS = 13; // Adjust for accuracy. + static private final int SIN_MASK = ~(-1 << SIN_BITS); + static private final int SIN_COUNT = SIN_MASK + 1; + + static private final float radFull = PI * 2; + static private final float degFull = 360; + static private final float radToIndex = SIN_COUNT / radFull; + static private final float degToIndex = SIN_COUNT / degFull; + + static public final float radiansToDegrees = 180f / PI; + static public final float radDeg = radiansToDegrees; + static public final float degreesToRadians = PI / 180; + static public final float degRad = degreesToRadians; + + static private class Sin { + static final float[] table = new float[SIN_COUNT]; + static { + for (int i = 0; i < SIN_COUNT; i++) + table[i] = (float) Math.sin((i + 0.5f) / SIN_COUNT * radFull); + for (int i = 0; i < 360; i += 90) + table[(int) (i * degToIndex) & SIN_MASK] = (float) Math.sin(i * degreesToRadians); + } + } + + static private class Cos { + static final float[] table = new float[SIN_COUNT]; + static { + for (int i = 0; i < SIN_COUNT; i++) + table[i] = (float) Math.cos((i + 0.5f) / SIN_COUNT * radFull); + for (int i = 0; i < 360; i += 90) + table[(int) (i * degToIndex) & SIN_MASK] = (float) Math.cos(i * degreesToRadians); + } + } + + /** Returns the sine in radians. */ + static public final float sin(float radians) { + return Sin.table[(int) (radians * radToIndex) & SIN_MASK]; + } + + /** Returns the cosine in radians. */ + static public final float cos(float radians) { + return Cos.table[(int) (radians * radToIndex) & SIN_MASK]; + } + + /** Returns the sine in radians. */ + static public final float sinDeg(float degrees) { + return Sin.table[(int) (degrees * degToIndex) & SIN_MASK]; + } + + /** Returns the cosine in radians. */ + static public final float cosDeg(float degrees) { + return Cos.table[(int) (degrees * degToIndex) & SIN_MASK]; + } + + // --- + + static private final int ATAN2_BITS = 7; // Adjust for accuracy. + static private final int ATAN2_BITS2 = ATAN2_BITS << 1; + static private final int ATAN2_MASK = ~(-1 << ATAN2_BITS2); + static private final int ATAN2_COUNT = ATAN2_MASK + 1; + static final int ATAN2_DIM = (int) Math.sqrt(ATAN2_COUNT); + static private final float INV_ATAN2_DIM_MINUS_1 = 1.0f / (ATAN2_DIM - 1); + + static private class Atan2 { + static final float[] table = new float[ATAN2_COUNT]; + static { + for (int i = 0; i < ATAN2_DIM; i++) { + for (int j = 0; j < ATAN2_DIM; j++) { + float x0 = (float) i / ATAN2_DIM; + float y0 = (float) j / ATAN2_DIM; + table[j * ATAN2_DIM + i] = (float) Math.atan2(y0, x0); + } + } + } + } + + /** Returns atan2 in radians from a lookup table. */ + static public final float atan2(float y, float x) { + float add, mul; + if (x < 0) { + if (y < 0) { + y = -y; + mul = 1; + } else + mul = -1; + x = -x; + add = -PI; + } else { + if (y < 0) { + y = -y; + mul = -1; + } else + mul = 1; + add = 0; + } + float invDiv = 1 / ((x < y ? y : x) * INV_ATAN2_DIM_MINUS_1); + int xi = (int) (x * invDiv); + int yi = (int) (y * invDiv); + return (Atan2.table[yi * ATAN2_DIM + xi] + add) * mul; + } + + // --- + + static public Random random = new Random(); + + /** + * Returns a random number between 0 (inclusive) and the specified value + * (inclusive). + */ + static public final int random(int range) { + return random.nextInt(range + 1); + } + + /** Returns a random number between start (inclusive) and end (inclusive). */ + static public final int random(int start, int end) { + return start + random.nextInt(end - start + 1); + } + + /** Returns a random boolean value. */ + static public final boolean randomBoolean() { + return random.nextBoolean(); + } + + /** Returns random number between 0.0 (inclusive) and 1.0 (exclusive). */ + static public final float random() { + return random.nextFloat(); + } + + /** + * Returns a random number between 0 (inclusive) and the specified value + * (exclusive). + */ + static public final float random(float range) { + return random.nextFloat() * range; + } + + /** Returns a random number between start (inclusive) and end (exclusive). */ + static public final float random(float start, float end) { + return start + random.nextFloat() * (end - start); + } + + // --- + + /** + * Returns the next power of two. Returns the specified value if the value + * is already a power of two. + */ + static public int nextPowerOfTwo(int value) { + if (value == 0) + return 1; + value--; + value |= value >> 1; + value |= value >> 2; + value |= value >> 4; + value |= value >> 8; + value |= value >> 16; + return value + 1; + } + + static public boolean isPowerOfTwo(int value) { + return value != 0 && (value & value - 1) == 0; + } + + // --- + + static public int clamp(int value, int min, int max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + static public short clamp(short value, short min, short max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + static public float clamp(float value, float min, float max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + // --- + + static private final int BIG_ENOUGH_INT = 16 * 1024; + static private final double BIG_ENOUGH_FLOOR = BIG_ENOUGH_INT; + static private final double CEIL = 0.9999999; + static private final double BIG_ENOUGH_CEIL = Double.longBitsToDouble(Double.doubleToLongBits(BIG_ENOUGH_INT + 1) - 1); + static private final double BIG_ENOUGH_ROUND = BIG_ENOUGH_INT + 0.5f; + + /** + * Returns the largest integer less than or equal to the specified float. + * This method will only properly floor floats from + * -(2^14) to (Float.MAX_VALUE - 2^14). + */ + static public int floor(float x) { + return (int) (x + BIG_ENOUGH_FLOOR) - BIG_ENOUGH_INT; + } + + /** + * Returns the largest integer less than or equal to the specified float. + * This method will only properly floor floats that are + * positive. Note this method simply casts the float to int. + */ + static public int floorPositive(float x) { + return (int) x; + } + + /** + * Returns the smallest integer greater than or equal to the specified + * float. This method will only properly ceil floats from + * -(2^14) to (Float.MAX_VALUE - 2^14). + */ + static public int ceil(float x) { + return (int) (x + BIG_ENOUGH_CEIL) - BIG_ENOUGH_INT; + } + + /** + * Returns the smallest integer greater than or equal to the specified + * float. This method will only properly ceil floats that + * are positive. + */ + static public int ceilPositive(float x) { + return (int) (x + CEIL); + } + + /** + * Returns the closest integer to the specified float. This method will only + * properly round floats from -(2^14) to + * (Float.MAX_VALUE - 2^14). + */ + static public int round(float x) { + return (int) (x + BIG_ENOUGH_ROUND) - BIG_ENOUGH_INT; + } + + /** + * Returns the closest integer to the specified float. This method will only + * properly round floats that are positive. + */ + static public int roundPositive(float x) { + return (int) (x + 0.5f); + } +}