diff --git a/Assets/FR2_Cache.asset b/Assets/FR2_Cache.asset index 77353a98..9109d917 100644 --- a/Assets/FR2_Cache.asset +++ b/Assets/FR2_Cache.asset @@ -49,10 +49,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 26192 - m_assetChangeTS: 1747808540 - m_fileInfoReadTS: 1747808541 - m_fileWriteTS: 1747808540 - m_cachefileWriteTS: 1747808540 + m_assetChangeTS: 1748595975 + m_fileInfoReadTS: 1748595976 + m_fileWriteTS: 1748595974 + m_cachefileWriteTS: 1748595974 refreshStamp: 2 UseGUIDsList: [] - guid: 00000000000000005000000000000000 @@ -1846,15 +1846,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 20904e6182baed446b49fe294fad22b2 type: 2 - m_fileInfoHash: 7582.cs + m_fileInfoHash: 8241.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 7582 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758838 - m_fileWriteTS: 1746895565 - m_cachefileWriteTS: 1746895565 + m_fileSize: 8241 + m_assetChangeTS: 1748595572 + m_fileInfoReadTS: 1748595588 + m_fileWriteTS: 1748595308 + m_cachefileWriteTS: 1748595308 refreshStamp: 2 UseGUIDsList: [] - guid: 20e01cb163f347c7819ae286c33baf85 @@ -12053,10 +12053,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3645 - m_assetChangeTS: 1747761319 - m_fileInfoReadTS: 1747761448 - m_fileWriteTS: 1747761319 - m_cachefileWriteTS: 1747761319 + m_assetChangeTS: 1748596906 + m_fileInfoReadTS: 1748597278 + m_fileWriteTS: 1748596906 + m_cachefileWriteTS: 1748596906 refreshStamp: 2 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -20032,15 +20032,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 6191c60211a05c04ea9265f89896f4d0 type: 5 - m_fileInfoHash: 87221.prefab + m_fileInfoHash: 84386.prefab m_assetbundle: m_addressable: m_atlas: - m_fileSize: 87221 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758835 - m_fileWriteTS: 1746895565 - m_cachefileWriteTS: 1746895565 + m_fileSize: 84386 + m_assetChangeTS: 1748589050 + m_fileInfoReadTS: 1748589074 + m_fileWriteTS: 1746886071 + m_cachefileWriteTS: 1746886071 refreshStamp: 2 UseGUIDsList: - guid: f4688fdb7df04437aeb418b961361dc5 @@ -22204,15 +22204,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 81e2cda70e8084a3fb324d644db244fd type: 5 - m_fileInfoHash: 253237.asset + m_fileInfoHash: 251757.asset m_assetbundle: m_addressable: m_atlas: - m_fileSize: 253237 - m_assetChangeTS: 1748064342 - m_fileInfoReadTS: 1748064364 - m_fileWriteTS: 1748063943 - m_cachefileWriteTS: 1748063943 + m_fileSize: 251757 + m_assetChangeTS: 1748596906 + m_fileInfoReadTS: 1748597278 + m_fileWriteTS: 1748596906 + m_cachefileWriteTS: 1748596906 refreshStamp: 2 UseGUIDsList: - guid: e6b16dc7c203450459bb86e24305f9ca @@ -22929,6 +22929,30 @@ MonoBehaviour: ids: - guid: 1f82daa2ab22a0943a51de0203fee565 ids: + - guid: 188dfe7e559f13248ba2c41eb5a59328 + ids: 1c000000 + - guid: f20112bdeec2e8d4d9f80e8390e37263 + ids: 1c000000 + - guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f + ids: 1c000000 + - guid: 2fd6421f253b4ef1a19526541f9ffc0c + ids: 1c000000 + - guid: 02f78a9ec76d40f49bfac78c64a754d1 + ids: 1c000000 + - guid: a7ec9e7ad8b847b7ae4510af83c5d868 + ids: 1c000000 + - guid: b0f85f7da5042c0448a526d5ecacbfa9 + ids: 1c000000 + - guid: f87b5805002ec9649bcb1b96d8a16ba9 + ids: 1c000000 + - guid: 3028dc075ba8c584d9bc7d1e0255e038 + ids: 1c000000 + - guid: 93f09189124b21e479fc891dbc1b93bf + ids: 1c000000 + - guid: f66c4aa44c09b6a42a2b5b9f9334d824 + ids: 1c000000 + - guid: dcc0ed9263c0d524aabeb5f4bd75ecee + ids: 1c000000 - guid: 8113366f9f7cec647878e3af2fb98922 type: 9 m_fileInfoHash: 19671.png @@ -28269,10 +28293,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3642 - m_assetChangeTS: 1747761319 - m_fileInfoReadTS: 1747761448 - m_fileWriteTS: 1747761318 - m_cachefileWriteTS: 1747761318 + m_assetChangeTS: 1748596906 + m_fileInfoReadTS: 1748597278 + m_fileWriteTS: 1748596906 + m_cachefileWriteTS: 1748596906 refreshStamp: 2 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -55646,10 +55670,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 6652 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758829 - m_fileWriteTS: 1746933653 - m_cachefileWriteTS: 1746933653 + m_assetChangeTS: 1748604636 + m_fileInfoReadTS: 1748604654 + m_fileWriteTS: 1748604597 + m_cachefileWriteTS: 1748604597 refreshStamp: 2 UseGUIDsList: [] - guid: e3161f1cd14e4e2799db62e6545115de @@ -62500,15 +62524,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 54748045ed19d4ea6889de9b617f6f8b type: 2 - m_fileInfoHash: 2330.cs + m_fileInfoHash: 2329.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 2330 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758828 - m_fileWriteTS: 1746949787 - m_cachefileWriteTS: 1746949787 + m_fileSize: 2329 + m_assetChangeTS: 1748068396 + m_fileInfoReadTS: 1748068409 + m_fileWriteTS: 1748068392 + m_cachefileWriteTS: 1748068392 refreshStamp: 2 UseGUIDsList: [] - guid: 5474cb78511de04459cac50d50b9d9e0 @@ -67469,15 +67493,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: a48a638548bdb6645bfa74867dc72087 type: 2 - m_fileInfoHash: 10566.cs + m_fileInfoHash: 10258.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 10566 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758827 - m_fileWriteTS: 1746949787 - m_cachefileWriteTS: 1746949787 + m_fileSize: 10258 + m_assetChangeTS: 1748595572 + m_fileInfoReadTS: 1748595588 + m_fileWriteTS: 1748595562 + m_cachefileWriteTS: 1748595562 refreshStamp: 2 UseGUIDsList: [] - guid: a48a9e08d9023374fab5d929e609b9bd @@ -118733,15 +118757,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 48120e902e0734a51a10b8b4c0229afa type: 2 - m_fileInfoHash: 7637.cs + m_fileInfoHash: 7639.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 7637 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758819 - m_fileWriteTS: 1745129375 - m_cachefileWriteTS: 1745129375 + m_fileSize: 7639 + m_assetChangeTS: 1748070911 + m_fileInfoReadTS: 1748070929 + m_fileWriteTS: 1748070908 + m_cachefileWriteTS: 1748070908 refreshStamp: 2 UseGUIDsList: [] - guid: 4822e5675c12bf14d93b254d27ec8bd7 @@ -130179,15 +130203,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 09efd164733b64d539127e1d09f6ef5a type: 2 - m_fileInfoHash: 5007.cs + m_fileInfoHash: 5207.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 5007 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758817 - m_fileWriteTS: 1744806401 - m_cachefileWriteTS: 1744806401 + m_fileSize: 5207 + m_assetChangeTS: 1748604834 + m_fileInfoReadTS: 1748604849 + m_fileWriteTS: 1748604830 + m_cachefileWriteTS: 1748604830 refreshStamp: 2 UseGUIDsList: [] - guid: 1900baa5498f6417b8a7037bb313eb83 @@ -137452,15 +137476,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 99c9720ab356a0642a771bea13969a05 type: 3 - m_fileInfoHash: 878477.unity + m_fileInfoHash: 861909.unity m_assetbundle: m_addressable: m_atlas: - m_fileSize: 878477 - m_assetChangeTS: 1748064342 - m_fileInfoReadTS: 1748064363 - m_fileWriteTS: 1748063976 - m_cachefileWriteTS: 1748063976 + m_fileSize: 861909 + m_assetChangeTS: 1748065312 + m_fileInfoReadTS: 1748065313 + m_fileWriteTS: 1748065312 + m_cachefileWriteTS: 1748065312 refreshStamp: 2 UseGUIDsList: - guid: 20c30ea7b5a4fa046b4cc5a27824d90b @@ -138479,6 +138503,28 @@ MonoBehaviour: ids: 73000000 - guid: 4cfddfd71be34fb43b85eec28d5cf24a ids: 73000000 + - guid: 188dfe7e559f13248ba2c41eb5a59328 + ids: 1c000000 + - guid: f20112bdeec2e8d4d9f80e8390e37263 + ids: 1c000000 + - guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f + ids: 1c000000 + - guid: 2fd6421f253b4ef1a19526541f9ffc0c + ids: 1c000000 + - guid: 02f78a9ec76d40f49bfac78c64a754d1 + ids: 1c000000 + - guid: a7ec9e7ad8b847b7ae4510af83c5d868 + ids: 1c000000 + - guid: b0f85f7da5042c0448a526d5ecacbfa9 + ids: 1c000000 + - guid: f87b5805002ec9649bcb1b96d8a16ba9 + ids: 1c000000 + - guid: c96f0574cd82c1848a8fc3b965d8d59b + ids: + - guid: 1f82daa2ab22a0943a51de0203fee565 + ids: + - guid: 3028dc075ba8c584d9bc7d1e0255e038 + ids: 1c000000 - guid: 991ae4d843392bc4e9ec4e7d8649d94e type: 2 m_fileInfoHash: 4192.cs @@ -166240,10 +166286,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3649 - m_assetChangeTS: 1747761319 - m_fileInfoReadTS: 1747761448 - m_fileWriteTS: 1747761318 - m_cachefileWriteTS: 1747761318 + m_assetChangeTS: 1748596906 + m_fileInfoReadTS: 1748597277 + m_fileWriteTS: 1748596906 + m_cachefileWriteTS: 1748596906 refreshStamp: 2 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -178874,15 +178920,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 6c12bb7674cd5416f8d846e62018a96d type: 2 - m_fileInfoHash: 1617.cs + m_fileInfoHash: 1598.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 1617 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758810 - m_fileWriteTS: 1746342619 - m_cachefileWriteTS: 1746342619 + m_fileSize: 1598 + m_assetChangeTS: 1748070911 + m_fileInfoReadTS: 1748070929 + m_fileWriteTS: 1748070908 + m_cachefileWriteTS: 1748070908 refreshStamp: 2 UseGUIDsList: [] - guid: 6c321e9294d43b84a87c4334b67e6d40 @@ -203945,15 +203991,15 @@ MonoBehaviour: ids: 73000000 - guid: 2e498d1c8094910479dc3e1b768306a4 type: 5 - m_fileInfoHash: 568673.asset + m_fileInfoHash: 9628.asset m_assetbundle: m_addressable: m_atlas: - m_fileSize: 568673 - m_assetChangeTS: 0 - m_fileInfoReadTS: 1747758806 - m_fileWriteTS: 1747244421 - m_cachefileWriteTS: 1747244421 + m_fileSize: 9628 + m_assetChangeTS: 1748596906 + m_fileInfoReadTS: 1748597277 + m_fileWriteTS: 1748596906 + m_cachefileWriteTS: 1748596906 refreshStamp: 2 UseGUIDsList: - guid: fe393ace9b354375a9cb14cdbbc28be4 @@ -229695,6 +229741,58 @@ MonoBehaviour: m_cachefileWriteTS: 1748063943 refreshStamp: 2 UseGUIDsList: [] + - guid: 5c532667f1147d349a9fbcd7151e6bec + type: 9 + m_fileInfoHash: 1738.png + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 1738 + m_assetChangeTS: 0 + m_fileInfoReadTS: 1748102499 + m_fileWriteTS: 1748102498 + m_cachefileWriteTS: 1748102498 + refreshStamp: 2 + UseGUIDsList: [] + - guid: e9afde6e7f083134cbe70e5b2307832f + type: 9 + m_fileInfoHash: 1619.png + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 1619 + m_assetChangeTS: 0 + m_fileInfoReadTS: 1748102604 + m_fileWriteTS: 1748102603 + m_cachefileWriteTS: 1748102603 + refreshStamp: 2 + UseGUIDsList: [] + - guid: 16b26cd405b13ea40a6ec6328af30004 + type: 9 + m_fileInfoHash: 10923.png + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 10923 + m_assetChangeTS: 0 + m_fileInfoReadTS: 1748102650 + m_fileWriteTS: 1748102650 + m_cachefileWriteTS: 1748102650 + refreshStamp: 2 + UseGUIDsList: [] + - guid: bfbc02946587c834b9028fbc33c1f778 + type: 9 + m_fileInfoHash: 7676.png + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 7676 + m_assetChangeTS: 1748102833 + m_fileInfoReadTS: 1748102834 + m_fileWriteTS: 1748102710 + m_cachefileWriteTS: 1748102710 + refreshStamp: 2 + UseGUIDsList: [] setting: alternateColor: 1 excludeTypes: 0 diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset index dc4171f5..9aec27cb 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset @@ -2555,4 +2555,6 @@ MonoBehaviour: - {fileID: 2800000, guid: f87b5805002ec9649bcb1b96d8a16ba9, type: 3} - {fileID: 2800000, guid: 3028dc075ba8c584d9bc7d1e0255e038, type: 3} - {fileID: 2800000, guid: 93f09189124b21e479fc891dbc1b93bf, type: 3} - _Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7640733ce3e6d52283bf75ba0ec3738db268ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096d897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743e0f8591ae3c7fa2d3130b993d419467c3a1a11a336459a24f05e953a20def4426fb65fc8a58b1358f90d04e060c5c571d2b1d2df9baa98256d81d67ace3ff30fdb03fd7487f0de3b24b60f810b51bf247fb2b1b92bc13b5741d788d13165e2476a8c158cb8c388005461687b65a3ff1b24340358a005f80142ff99728e376301c37373b1d6f9dd45d64ff173d548421cd7a3aefd628aa7636cec3148a304701d0398480ecfb2ba1d13492eeff76bd706bc7d4932e661634ee528ba16386a5d2e222b8a926faf1324ea91eb185bb86b273cc874da44c2c8630469d658085c1a5814ff32331eba696b6f91e488b384552cbd92da6ff683e95e632696d9866c2d4553bcd3a41560b90932df6bb3de40b07741fcea64c975b168176f69bbafbd0e02659edc6f57fa421c4de43d1617368022761e988981c87c3693c4457b358b4774d2694e3f634120464531e71ac865af2011b8ba6fdb7a7f63dd5a236d4b39183f9dc945aee841be3402ad314c4f68000774658ced46b6504c174de2429b726e0c19a8b791aa5d085276ef6d2e49321474591be0b0c606851a79f9c5352400cf703e2433a7b16f5c2e6edf6435237e961b396ee87f91be4612239c0aa4233e7677e7a55dcb88d4107f070a9e49d5b59b7e9c41c82751f6647d3f927f2a9e42277d89e9df153fdca55f4b6bcfff42469d23fcd8dc3077c189625a00baf3af2a9114c7d35516e91e8c796f198b64faa45a7d76e4cc1385ae6d5597fece2223c2790767e24fa936e0676b0de32eca03e1ca4ab765c42d4645930bf57524eacefd8d1cb65bedc01984f90d2e25547c193f025f28bed33a98ca8b20b0bb6153fbaec60fabeeeb580bf6ce3aa12e00df0fe90e34887cee722e374a7fe70e0f5e22a61123ec64d22b53a95330f098dcc6cb6a2f3853d2248762c7c172a46c3f1a052d5d041cddcb73bb398821d6427d6aa47b4c51c2b84e0a356679245da0771895c7d53dc4281c57ca5c0c735c465ea5452b171e5977a3a788b62300769e73c717ea69523e1b1b6350b4123f2055d2455efa01667d0c20667fd04e4026c79132d15cd5220a5d361bd5a8be626b68deac856f7d7aba654bc01482cc6abd9562f4c608cd307a0b62c6c47d5753ecf0758b0a83ed7892cc0db4277b417c3d600f10f3774c4f67e5b9f6dff95a6fc92d2f12633149407d249c0605e7f6013519fcda7298b975a4262324caf69875d8821306b3d1e76f8474ed588871c418a6f4bc4de93852016a5c947150da992f0af17fc19603432768e6fe4375176058af2698f75295c034652546000a1f4747974a8bb1e79e1c627676cb950ee7484a337fe927519074615183074115cf5849624826405ceebf10f6c992369faabc7e24043374cae00a27bfed026ba65e77591e81f6560d89a621c206ce7802c23e58cb6ff915a9200f3607a97e250268104af8cb12e08f8380331778b4c0616e04788e4ef72839780d3480bc0fc008227d6a65b0a365dbc8b97fbddd5f4c93403c39f51e66c109c4892bcf8152ebb588515211c625b9c6e3456d1a197deffccd1c6aef77703b386d535e2778955975cec93474f3a3a69a0aff279d2c24dcbe87d7629dbcd92df98c8a5d8c391ec187611c171c4d84f6d6892f1b78499e0b49769f5050f8bcb8f59c3b0081ffcd2cd63e5102b6c306f3f331c7138dbda4432b96a60327908e715a9bdd7fb3d55a4a23ebc6694c1035d377e76274982a9943f3b4ea029432abf72c06a56ff67adc3add40ff1fd9bffc15f34ce503fb429a233be4797cb7f8e7ec20f59c7b038682fb81b64821a93bb1f1b121fc00fc74dfabe9e87372b8371d764605691d4f67d2a4838200775412b3a95892615a31dd92360e99d12705167caa00d52c1c785e963ca485fc797467fffb9c1ccb4a6887ba978dcdf14a6b5556660054877ee69621b7289dfe541fe63d59662974211d38bc87e56a7045b01f5905239d8536ef7de1333d8373368a6678a68f98e440e2358438110e634ff899f8f7bb07cf7e610748e30ba75e653b7aefb41de92a173c1924ed194c2501e1313aa48b7c7b6f36f745884f003439d81efe961fae321d3defcd2ad44368141db93ac31efc0e49f65f7e25a4a1c83ae5ea16fa4e8ee2706357e17b49a6430d70ce59f6c407a72cd3b85f40cff28765289346e92c6dc5539cab5fc61b92ff645c736a8c044100146dbd31f911dcbf7130845c2313d2c62294ad5a19a7e0104048041ba377059e69945a57e99fbf6540ebeef69fef22772ec67307a819189372540ebee9079c172a1a0c704785237d53ee65d146158eae6a7d4ade03fdf64f7ac7e49590007b3878052084e2b230a9170ea4444cb9b2a23a9fab924341ecd310a414f29647f2ac72d3a6b4c9ed6ee253f5f512a23b9c34787830d053f18345194c7386c622405e0151b77812fdd94d3038c0c7c80189b4071f86f0883dff9c509f64838617e3cf345414f4f2144676601e60754eb4f1e529278da79b4fd5c451e5d74e9da32cb7530f6c8a126a3e0d65fd51a59e75ea04528059aea48b6b832927baf2c20826420eaa225d217cf894167f419dfd2f26dc30235ee2b682ed387a104b144fb4b4a2280e9747974826cf783a68db33f77ea601dec29eaa438c8c69a528edcf1cbb9e341c39116721bb17028e6a7b1912058372f3162e76534c6c7d0addf11f38005b7e3659b0cf70f1dd66275ee426ef8da85fa57bc233e9148730ce9371feac373a71f203b09449ad1d0139c750f468458e687bae8543c2d76a4a1e1efe237f214611db8cca1323ecea5299c36cb1657c9877060884feb1f7af199965b368ab4080590f61d0f410a18b669ad8dd85441cb05d7b79d7775abb3d2cc51b547760ad0125bd394038b37277637e1e65d81a29d57bb555ed316909ff52db5cd00bb2ebfa14d7b7c90adc78aa07fd8b05c3a99bed65b9273df44030434d3bed1310428315681979016260ca9f3c5419d00bf03c03409195ae7551fa2c07fc16d0ee6499c57f5f9123dc62af3a7b39865fd9a0c7a377f2547fadd4a0171e4efa6749fab1d811df4f6a8260e0a21f5b323cca9a5267338ca603efe5e8554186fa7098b70f7f7851b14710ceda282e0960ad5e9cb37c059434d6a1b4c8f70907d7049a90f5986ab3b41c4c9a77014e822b197ac4085a2c7e6b2bece5212d1958afe95a213c410107e8efae3037601ccd77e0765183bb028328e704de7baf2ce236f4eb8da62c44ea1874dc19abfc4acb481e6e41b6c825951321b5dbb9207d68e33206bd8a7174a4246069f7981b2f253139965c41eb6700e57f5e371ddf5cc70eba0321fdf8402a5536e3a9a0d202f8f190aa808921260834fa28f4ecc3794503a1e9dd180e27c8073f4e8830ee5eb88266458d34db3e146bf4aa07dfca3c92bc29ad42bce020e3687188c96faf28b9631e88acf6f9112763fd490db82f18c2fc4334f9bfe37562866224c353757de4e29c9402ad16774ac42a5a46d6d22ac7a63a33d484d0058156dada6c2bb12bee7f642b1c9a1515548555a09289d5567f6670acb1a07c0fb7af86a800352f05682ef0036235b014a51364d4b9c83f4b516d637538dfcc3559d2d58258cc364e2a2d7091671815010c5b5532adffce39eee7619aafa26240bdd376fc7703a047559607a2aeceac1575cb45c59e348916d9ae918c3876c7446b8937f7af3d3e40e0e2eebf7ac52373abe886d1704f7c156d76ced7937e3a5457086b1b6486be30a89d1935a9800a5ee2bc117d197963514862d417cd8c623ec8e0f5398c46a127b8059e1a0c98e207b2ff12b8530d6e6fe1b0ba06916321547a085fc7ee48312f02121473a7a58404a63777da04e23b54e4498eadeffc30568e9a325b6c365e677f8b08a37795fb311c51bf5f7f4b7b68cd0ae3a5b9843f00426ae50c7229972496df5b78da97dd4db1a336bf4370294371709ef9dee984323cef5a02fb125775516b19eb69960970e1d8726b24bdb72a40c6b190f96c0c6eb8b1c1a1e8a05b2168c518bf6c6504014be468876e084a6ece7fd4a1f3d8cf7da5906e217182b41d7afa669fa5197a253f50bbebfb7b005067536f6875fc15406b699b022bda8c32998501696eea134c06af63a21ce48129911e88c4f11d927610a6353b7e78f9633b767b7e8396417d3f226d2460b75d79e971710d52c74049187779151f4ecb72b700de935f00ad269ffafbec75482838fb51acf3f913ee02493b99f4e3d4a20e886b48bb3fc43a1b8297bcdb128f507f7f5ab089c4027f0b0821e9cbc1389d7961f1aaf2dfcb8a2a59d158018ae0610cb914f8c7782bcf7bec3cb41dda6e5a4435353c033a435f4c30791c6aa47e69177d097a2ace9a0d73c22507a2166d4f372b9dcb54a45dd2764b536800f19a296aa7cc9be4e9841265d8373b9fb5fe9c62c9543e07b314731fcafb8bddfdf19b26fd9cfc4ad16b4d4f50ced323678dd34c48fa36ba26cfe245c045e41107ca981963eb5ce6fead6f345f71a97e1769793bd8c0d908d8aab2347f410a17505f561a68ec8752e9ba4a648b02189878605c2942dfc6b90f70be4638276440b78684011b8e172ae126516c0b3e7dd6911abb2161cb2a8f6762f409d1bf74eee074e30483e84cf98878f41a71a63ab2126a281e95bc2114a40b667d8420fca19b3f4d69a587a786994b5626c0451dc12742f66669a97d636908577783ce75687b537f4e0d5ba865ed51484999052b16d6d85a3ae99cc70d3d150063cfcffc352a1255133c93327c15a4ab176134fd6f346e4d5b29b052171b8d8b215d0c34bd4d7e737850e8ad95f429b07148df6e72126f973d1d575edb646d2f51f8efdff79011361d3f7be0b43f479900ff1f9f050401cb340349dbd81c64e457023866f854a08c6fa474380b0e9577237d0da8d4487f826b887bdb2d00b5b12949946eea57a98439f0361a8befe9923f0f1b505044404d31d568fd420472947f36af28367a57da3eed0ddf789176861572e880cb2e4b97240a854042255abd325d1b7241021c8e0990b83029c808363e27c389a26af07f40c9362f353f24d86ebca7d4189651d540975eaaa76665025d96bc3db6ae910e707a2c317f4b3639045c8758b5ded75301a73466fc02432f1d9cd0fd089e2b4624e48b844cbb9c893198af02edbeb73c6d103e0f7a2a116e425d4fe37b3930652fbecb2eacacf8b94343679cacbebda052f294e622c43fb00afbc6f06cb80ef83615322ff2888fc11785ccbc92ae1b0061516f9231e8770b7efa1e7c2019f7164702685f353d906a67992f2790a7f76e204a998c6b3e5b584a559e3dfd2eaf6e349c372b7b90f9c97f69ecc984b1460b0e8d9c69b28381855dc1aa8adcce679517c2f2f56fcbf39050d10d025191d4990d942f8bca1921b81d4276c3c57c5ab12f83e0c2be519b427ed4467c6f7b28106a43986ffdf360305f3bd8b242b755cc2bc59a17788a937461012fbd34a1c6684775575b1390fc6016aba0d8ca54cf5d5c194c899a5b2eed66047a5b4d0f266c4ca0a898b0b15eeb3efb2dcde9baaa0d308e1a1b543cceec456af40f15a013072e0d256afd670e0e459fb46a760328de5278743f0bf5e8f02e43adb943b12a620e34fcdc953f10c864d79e0b0fc79cb66d2c9d71eaadeddc2463d9d79c9821b674241b9113f6fa3c34137b9e0510436706378a108e40b3543671d1650d1027342971c73200635ded0c04786c8896005f15cae8d31d80dd9a785a3577fa8054df067516063b9610f12913e4b0b60d4a5d59a32567c6208da217adf8fd4e23970c5758721480f9247f252702d09a72ae7a5b6d2ea8a413e71901ba1e8f9e12a2057ad9585f9b36dd5f37a48ded225d3d8a027fa1e2f5ee67446fa7ed38246a1fec7c03aa3de5b020da70e69351fed9263758939cbbd336aa4f12a9204c823e1e3132106c4cc49bd1b81a642a48b475eae10cab25af00da3d397ddc99d6e8307e2404c4830e4673fbf36554d53661f2038842d184ea0955ef0b54d2c10299a1ea222350f3cc34352aa7361321a6060b6c31244ad9508b50884a1a2227275dd6c6306d71420e46e12ad25e233028659d4936425bbf39e7f768e958338ba09d12682103680c717c94c3404bd402521a9cb64a318b3be551a17685136271f4869dcdac74aed4036e2845521d018513f416cfbb7b426f284e4d73a40d79a222f94838160557dd6cc7b2db092e8e0252278a7a296db678452da55d2739d0090979dca72a38700e9e3862f4c965990623af3933680c336fbb300d179f07b73297bce4820b18d81a96981962d03eb0dfc7ab81d67363a1fd456debfa2a79525a7dd0a3f37f1cefc328e0622f0c2e9f7ce0edde4a8820c0345ee2c8790422ef1d45bfe4009b5c5fe3bdbdae93012e0974ce6e1a3d9a072fa27028ad9e1a74c006cf7f75cb13601f7cb33df7ba312b332feb3d47733c4e833ded8770c30a3fc948fda7c481b92a79d072690e2800737245f57eb2dd2d4c357efd4c47642e1e780c8b504376984e77c1c57600d33f543d61f9b6b888f214e54e22bc81f98e22016e1ee54caf481721bcf80ee748b40842aef11a9488990fe789940bac23327050e7776ff124a171e81e6b036f1cd26366e601d015574876082dcbd54354c4451297a13040dc051cf280cd89e3695f3549ce5a39dd9da508a000771ff076b43b1d4e0d27855ddc76e1e5c39525d25a61cd958c74f98b6751c3556ec09a19d369ccf6936ba3c85013f2e319c3613a2d33a715ed850229356de7bc6430ef1cdc06ba2dca2e3feebe6a1b607dea8e5b1077283a66b006596c5ec225525f2c80022907137c8e045b7348a87d945d53b520423424f84b4ad4001266d692e564a1c2655e53f2a1d89e7c3339e1f8763bf0f47646952b0887b7df23138f272dc88de307ba2fbaa6a7c21b6a573aec9623762857cb092bf9cccbed5a8b314a983956033ac6ff306aab9b1e08b19660c2a37547639a2f9e409d15c51042601b767782300136b25b23a79302672833aa632baffd0178ad3169f444d7503b20ac0bb6948033c862f855d16b0a2c330568d1c0283c6c9ee60236af38f20e26f4a238bff1e1434d22d57258ac2d1c48a163065256ef111cc0912f6db67c7170ea30dcc8d26c41dbda7a62ac36eb0f461911f22a1343300690547f8211b1029f46026d7c5053743521e12cd151be19d582e854a589477c2f60d7387eecbe137582ff0cc7a773686c85264cf570014cd33a5405fa05a7288e7e3e1b791af6479d3148b1ad4ead7cf651e71f63fb86616323664397b9196fdcd67e486858ef788491503bd7af6120182e04b412397477fa6046aa4b4c50564ab78d84ccf6e54e4060a2f44bc2384dc3465bc6becd8114b40abd3760663b2f1e587970c31a132149b673b1967f2b3727f96c91a8161518c85e303dc75212252472d6f349c88922a682f08bbfcc5434df851066faaa8707bd9ec7deb5ae1764c8988d24a937ee5e6f49eb262689586c4d9be2b39d86e07aebceb0e79068d85467ab3dd9c0d07458694e094f419f1f4608cbd4af6e35fe42b81339da8706ce0771968dd2c7322d1df1c5e41470d04475eef6dfc49429e663ab8092d3094edf6e1e10c0d82cf10e2a624960cce6ed4d7657aeec90260a7248b0297c48c500265ee675f65f106b4820050925dd89b24942331c2bb73b709528840888566e56ef6270bfe670f6ed663c09f374e31a6a410120c5851ed32166741f3123f81d0d4d5b0778b2b76645c645b6eeaf47fbb10d18c88736a8d1d08e4e59729027105e5a15be2f235d47756425004069e5721e792ec2c4405bbc09d335eb645ef4b59e34569599062bd46b5f3dec5ca99167a8dc3afa61664c1efe5937fea7b7542ba624600c1251d8174d595565036f606041ce4277db04acc717c76a40cf2e2db30b1145c8b779aba9fcdd54f7ef18e471062944da75cc07abd12822dbbb99471e2ba1580ed5d7e84486147b024f4a27001c0746f973543e3f0a9966df9c8565962473226f8e2963d0beff5f75b8f9a479fedd414bacb054299ce61891c2f758fe501a25c36db871f2a3753974f4b3f8033edf1f41bce6168ce1060b7642d30dc7a760392de0981849b0cb11de1538e1af21e3521c27e8bd96fb661e9853034f2f988d346b8634dc5a382a70f2d53976a8245b545f812aef8f1ecf2847b6b09cb41a4075a36c4d3555c0ac1b03875194cb22394352a7514e3d823c75555c2311e9c624296b3c2bc429da0061d50eed07cc3b5c237e6d4a0cc9f2381fcf27744e1b42fa37ad7b00074efd6c2ba9b37a2e9534a86eb8478e571131f35d8bb40afe994db9160a245b513b55d47ffee19bea88f57504d0e295d4b3a226226f5d7d9af36e925a069cdb8e26a8cc0ee4f1a7d06af72a7fd5f131831c713553b5821c2228c5736c73f6e3eb1ae7dd27ea78475ab509737734fd70e49f15766b6787d9a48ba9e55666144360da159911edf6926b476ff6400a6baad9c9a8f4766d4f84930e399b6c5f9df5a1c6129c1d645ff8a8820b23287d19aef754bf1f4221ccce2a9a2d1f256d00f25685aa8508317389954fb40c788d53ea0b755be71dbe3881f94472833640d21683fe7aae2d94a5c6e1358af22bd9469d474214b03618efeb42d380b25c0a3f2bdd35708812a5bd9f1a22c853482cac20fdd53cf42add2093f17194a615a9dd158b492f9f68bf8aa2857496144e635ce8d89f4b78324b00ba55037a84389b4a8ebb4c370104f247c0b56690497334e28e15abcd750b5747404974496443f996de40db30652b5ae4e6578bc3cc244b2e8ae50899e431d5821193784b793bac03bbcfb1099804849d453819e27f1a1464fe46be7e3b6d7a106a581ed1b30f96545478f7038d54c78f626b54ab1848022ba7dc49c0fa2bc2d7aa5e61c01a555154a3c48d07220f29557fd0e330e626d74daa0cd5283a554f80b620582ef2058bf2e500f7ab450a4eb6b3f44029470ebfd18814160d7f27e5b28af2affd4958478544f04ae62e7d93b45a8cdb2e9678c9c56187a6deef66720d1b4520535b506d5aacbbe457c45bfffa7e9e4c0cb4144803ba745fd0fe2674ab7e3ccae95d1911abf936db515d1f7642785fa3714c65a7f903e266190e625c864639d8879016649a5007f914106661d9fe1c579f83035f18e3c4ec3f80099d9793619796f711b262c23dc2545f6eea9c4340182aba430242d9bfa3cc295c1c596b6281aecf08d10f69f5dd45400a478a52767c3fde71dd4f64da70b7b419c79aa7e3403e0f3ace3b112894af204202cf062e1e9fd9247cf985314af497773c7c448813dcb4087b18a8402db6dd2d3021dc3fbee338668c3497b847220f26a49aec176b982f21830ea9374719523b1c5802281758b857bb21ebb88c92b062d730636c363a3d690d443c32729051721fa32b60dbc8c14be295d38d84e7ad0ea2b9a0e9491afa556a94caa36a14352b308629d041eec15f0e51b134f235120b0fb42bd3cfc44404562a34906d9b490a3500a2024222324df840dbf768c663605a2a4ee0bff7046bbddad894dcad32579cbb69f3d8154d311886247116b3641d8d95e997e92aca2c050d4567499e715a74325cac5c6f884322e206b9e4897e0976bb0646c49a6d3979690619a54b8479ec361bb7efef86031d2d74062410477b71c40e7168d5690ea19626c576a2e9285d8ca41ba535f9654209299625671569df757595a6091d15ce0d1659c9c08c40169da8976b2cd659bf74b472feff3407547018fed3ac7d67aabae8b24c532e036a9680774082020bb43028ceab54e83226f052c62674eb6ae1be124ebbdbf211a4b708687fbcc62972234aa384afbc56d1b58b5c0168dd2182ea97826fb34f6fddc68e9da3ae4d1cb77b54022a48e6707b682071674e120b6bd6196bdbbb46258d4580b5c2a6067f03a8a48514daf6352ff7f8f86d21f772b4820879c7b9f703342e8f70c99b332b63a07410f398206fdfe43ce3c24db8513ef3013f9e8cb7436057ae19b479946c3c32a4f16af79a1b639859abf5dac619753dadbc9c72ca2916cf4f6416f944598857e10a0d554445a71922faccf4b17b6e6a700ed8aff751fece083947fe315cdeb2249df8bb0b3481f3158350cf5d22e22c095476c97f374f330d3f4d0afe5a4b7ed87e184f742976a48ce59a7401332c2b571af4dce51433ec4ec5adcce7740f90c82e0821f5305fcc35e4a99b2e3dcabfebde4d1c992864ecb1049d39d74274fe0cd5c3cfc409cad9853fee3542321b8c8f6db7c5c12ad60f6c0b2c0531250b0da75758fbfe6583f41474965a3a2fa97e1f2ac844f9513de1abd33ccf363b589fb6042266751f72d60f5326c93f7b2bc29e5119f9a24ff807e589b0d4d6532a4fcc36103e52100cc1480dca5ad5062127a97a31e4215efe66fd2a4bfecf610144d72902f79568eb51b9a74f6a7b52dcebaad77d51840f8fd4cc88c383a40df3e60c8683ac0329934065829ec9ae67e3500637a8a6df51361965d1d5f35a6f0b3966c988fe2a77efd369beb707ad3a2665a6737d6c644bf8454263ee2a017a642a889b9d1a211bd970d883ef62f62f6c2af73a99ceec62d51ac2ce408d663a2e10a67380ed624087c14dee45e73b69b2ec093bcd391e693e256fb8ddef5c66d713b000086ab05a8c38c05a1bdaa71220a6e3ac7cd5920bf33cb1a65d1a1d761fb4c558973b721c629c37fa06867a637e5d97360cb0ea01805b0dbae3a84859563679cfa000aa5be800b6206267fa7848eadb444dab7d31603826c3d148c70be490a3cf0daac37d4dc3e2f398f49b17619403cd848ca65548b890982619752fc8c204f30bc98661265d91118e71ca55d43e24654b958f71c907e93ac4a35c33b24cd4291057f369f25e0b1ee2471c4783e66c643ddb7a5c53752b04e04b9d35b9c45f419da0457cb6448c13758e710f2431b8dd36f7f571c7317b8682f7493d04bf9be117255523d3165107b098193c051be0af93bffe4eb9d17a6c25bff9527135f0490c700802246a4eb2b703dd2ee8c1756227072e443eb36416603eb714e4016a855730cf7524e3d3fe0db10649f34b54e6345b7a799ccbf5a7f40e5d19b33996b96e638548f2ff3e433330360f4651dceb162f1f3f7ce4ea8b3b28801486bab14747bfb8703bf428cb6541526b96e561a33271031d59d534524d11833780d5418681103779996cb1210753d939927ff555c6dde213b894a01df40bbe4b87a0b3c47c2613591ddb0ac5c0e11653af6ee4cd07d9fd5eb8553e15b0546d7251995657f86149486db0c7142ce3ac2a7f4dcc62ef8b52525eabf3d817015771b783e8a6c792b44edc649fa9ed16cd2b58ec6c01de2f9e22eca8b5a35422606ef9c7a25705f99d10021b878aeba96446dec7812b95559318220bb91edc10fa02c50eb1267376265d505b00c3a814376a0dfb811ca38c045d358a7910b3bbed111689c6dcf73ed3675edc23c6ab309036bedbef1e7121a150ecf10e1603ea556c911152e0b1a58c4c3217413897c14d64e54fad2733315f0c188a3717b31595737a48cb6622507b62693ced5adf69b9523e7231b33c2d385f4fb937d8918a6647534a40b00918bd3636ef6f90e046147e4389d840e4e136597ed4e897e75d2f222a5951d55695a4264c0416d36237bf085a46e3e49d58d47213e7323430264f6d2092ba3998ead4521b4d731607f644496c0fc35f85b57a2e7b203d919c900972ab7b4b2f837a8f441b35ffebccea7a09d5845fc016510c69e873418853bc4a75bbfe3d7cbd8b3219a0077abbb566fa659c47bd1830495b0288b5470f3907f05e1576d0325302b45f4986dff129ae4b4e6ea6239a7a62a6055a40f4084422e059072759c06a38ed66935d61b7284d2c2697075e6d1caa1c76e32a726c09435b26a585e902558be4364743d2283ca1d25793e461b37eb28a4e43cfdd40c5815d29b9875dae372f7c21ed9426d8d7f33a7afccafeeea40ea5581038bf86ada47038a1fc6fb44424206397c03915744e89360a5843fa826f8538d24a419011fd316efaa1c7247b7ac920159da91c2a6f1b3d527783ab9e894a1082a7868e65b175657135e52d799a45708e220e1f19a262429a811e777e23f27b152759dcfea77963d7bb540b75113b49331339c1986a29240bc9f5e492fee64cbc95e6aebe978e369c72485d4d57cc554297bb9516cf1d56ff35d135b295d02aa2a14edf2a8d8a36a3705d0ab2877161974a272ab97b63127890acf469c4e932be8d4453f713d54af47bc879d3d7f7773c906097915a8f1efc9e98661e693267a670b3dbbde1957c8b23c8c14c16c05078dc47269cae5f18e29da7a78591d376b79ee0bc742ccb5a061cf3926e322e11a01710bddef33555313407dfc61208064f5109ad3504db5b575dde7f443355143546f8917fea673c698beda933ab210d14ede2c03bdb4763c54a9a7fea4aef6375e3557fe689793a47babc55e8ced753c42e6cceeaeaaf59ff95cd3450e8514b7a50344f55a1266299e3867ee00d850a8cb9444421df865f6e518184a951755e6970cf390227a96455cf67ce702d390c1bd7c1092c956d65362b4358dd55f315a71b19af2240f34b9e57670eb8ab2f3fe88b962e7093ce2dfd95fc291baf780024add8abeb7516261b89942ad1a15375fc034068eb22853aeb46acb83c1c664d2f98cc997c24d472747012e6fea35b5c4186241eefe1ec473213953222cf6338111e05c62b450620284c22a3ca94c6725ef6053cbe7bc24e557a9897705daf5af42609e257dd787873ba095c41b783614c22d32bc9267a74e15372b0ac6fb07afc7d97f09da9c93b6e7eae78851f8f63f737e39331db241aa17d02036ac7cb020b8f59bf4e74fe5da76743b487fd1000e3d5ba758c1c4828a2b1911aabcda63549b18214784eb17dc7791336678f6d5c93fede6af3a98912473061ff061909740f78fe388025783179c7c3f9cf807012bdca785211c3bd5fd98fa456504f7b1f7d78ba1f715922477710f12be5904238a173423ba0b6624abc9e60f18122e137bd1c89b7c4707c63a931c921b5e845682d234a23f3c08139167063d2f930c5660fd617fde605033008206c9013be6a2c5af71fa46c042b7d9fc2a2540ca96a77949cec212fb77d33277a1ad253f0262bdc9079011121fa0aac9a5f2363af234e761b03892eb602118aad3419e0012f71eacd797c2f68654a69093335e95e68296396b7910b4fa62472977341aaec1553cbd03a9636a61e0cb6b9212482cc2816165d7b77b9c07d662854eec7dba6f555e17994e7dc2d0c44885524add17e5d3ebf8a2a4d709d99754ea06ee2b857300ec4cb06fb610ff2175037ef649bcf955a4dd279992ebd3a4421e0ca83631103207acc8e627aa6603083bd03c651ca261dc936d0742e35c37ff9b5247fbb904c61c6f02197a2082a0bce55e3133fff6a554552b3651e87b150900d5c2fcadfeb130b650061a88f7a2d9f24bd7be7284106e186c6962218bc4d5e8df86b5404be126ad009dafe08ad2a331ffcbdbad3c76733a9b1bbe6ab0f0d574c40ca77197d5d1d2feee9e099f82726649bfce4006d31aba0c855acfcd315e116324a4977a24c9d59dae9c2b04765b18994820f132957df0e7517e2d3091afdfc360934bc8f6106e8993dda56f405a79cf8ca6ea9db0c41892a57ecba2f6f9c0b133985c1cf6ee80984d9851483771a6f7046da3fab59d943c8aa9237753fe8f65f30bc45801a33754e87d24a6d2bf94d8ea4d58ab55d5fba11c98a7a014f6bbb0d704aad455fef8a784f8d332b72d79da4e0c519147153436f89a8b65b5388610c72a721894c072eb44a1165cf2c726060d8e11eea7bd07f1d073dbcb6382f25c72b26b8ca0827f1e7f4ce5f83128dbd05f7e9cccb584b87a22804810e4b8984e514615cf92ad5974e0fc90a532ffdcf6b043e51dd03f11fe09e16a1045701336c4a796fb1303b24337fe524de41cc8dda2c12ec7636591efa7fc368bf3393f610fc769da9721f3a4062845ce933bf61965c83cf9513bd36a3986a30f42d9b001410eb1e3568374d0ed7ac13b149082e3d25ff1bb7638b23b9ad4142dc12b9ec387cb727b860d4d2dac93e4298577ba55f6792e6d349b9779c0fd7e2aa782a2091994c2d011f76dd502d41ed2449769dce641d8a7f2ce711cbd03b38c84884ad0ca02cce5c57a77ef1b495a60859631966c6ebbaa460a164b23a6230e351a599b0eefac57658be88f46484cb3d721b2534559e8e343e526d00c81b22f5279fbdf0030ae5a0615ef2f89d39bf236c5edbdfc303724d333310c0973ac08b1f83e3fdbe44bf82347b2d07546a68fb6e4b9327f601b82b10f4dc2e06daf6d8639826e5a93d9bd71d5d1447d66af9c865f3d1b259666be236b9edb320ed890f7a54a3bb438351301a6c455415ff017b0413c91308437ffd2cbc509dd4b107f418dd3d7e38c17b1e5ea198c4abc0f8354972ae34b79c18be2a5b71002b10fa3464513c39c283424271e87167aaba526c4b79189cfc2cc2833b7f53de507af34e6333d60403ce08332f943d60f180961a53de4ca42997319113c074432f63f2f6244035226ea98fe57eb43398109d6d45156e32722e4f25cb0146f04359c404cb78cd7bcf494777034d6725756498807552302dc1317fc7d51995dfd747b374465098e0bcdd61043109d0db37d65098973b7bf12a97429af904594a20d9b1b5fe246dc6fc793d53b43360cb025affab6902489cc2a49fdd9232dac18316e357571b24edbde96aef8727c208c8886861fa054cdc6eea0ca67a49a7d0ac012834e848dde2c8ed1180683723e9e296140aca793a819d3f39bdd87c7374913b9b895071207fab85980cf33445a50ef688105e62facdc5552dd87d6546ba9f7aee5c2d52c6ab896aa1bb1e4576d2fa94afe1f462162e42cec3fb4407fd11cb52ab6e231779bb30dc87f3c13eaf80df5bdde9b66439c29b3fe6a07035987e984d788e0f1bf6111cf3b017db226e041f431be9291939d0e7172d1cce182d6675058b0eb63c70049a33323d4c51624253153f4bae7da7b18548752648264303c749a2d6965e4ee3b420845d4b75e3c74a153746261e470853c36c004d4abb7476350496f374540b37a369710605fdfa65aedc33ef762be591aa295acb4dcf0024072c7e864d2c293fd4f07d4b2afeb2398e656191787c00a016d8616251d785d4684dfed97e7417da0673c3675365995289dfc21730929c832c1e9d26353811548aae4c87048cb8027d3b98eb3f980c848e4b14cf14935c2a4e84539f29f1a4cd616fdca419114e1498c5946c2b87c293111897ea24bebfe3f5892a76371ad96ee0654dae449895830300c9b02737aa2ab8184fbe59baa91f2fc099a23b3bb34d61fcb36f2a70d8a9ae1bed240c0fbb2c34542f506898c89a0f6cdd043139bec84c7b4f2b14e6aab8bf59f0c1327becc1843928700a9d1a35cce69f414edcdae6d9b57087406fe7b156886ef158086794801b7ff70fb14216697b08047a13f964cb296417148bfd0cde25386c2e29dcd34e33c16a5cd1f628735a1ec4661dc8bc70f5dad06b8057f4e6742aca78d5e73f9e35b646518e08f9333ca3ba6c39a5fbeef5dd240454c03223327b17582bb09d72df26312c0f0dfefed403a82264785230d1237d07c33af1f5e969830a2051088c06488d128d3102fc23dd264fe7f04046d718794ed35b515bcbc3bd786ef6e1d9f4cbd6540765a4a02080e35f61410ef9293d3207d8b95f6199e9de368c7594e540ffbc1be714b3c342e69052880e42f32e495d31c4da003a6c75ba10bc24d369ea375f627c0d1fc20f0ab5404ab1d98ba6ea0842e99cdf99017e505c303c80984505c250521f91c496dfbf3170be0f4463d0952e1c90518716f96303433c0cb475b27a441277223a843226082252d6bd90f307012f51844b4cc4c64b839407d2ec73a621c7accc1352a4554eb75a64c423a5724fccf41d39c93a6f4cb1d7b7ef2b531b69f8f7f6e427f4af2da7d302a6298b6e28f8a8f807a993a8011b18c42a5c457a0b75cdcc2baf8e273fa44a92f637c923259670182cb3dced654ff4c80f3084d113b2f1e308a86628697f46540bd960c61bc5166c14d3b2a866209824453ae7f028e45956d653d33230b8515505ce06c14fbbe4d346f0e5e765994a28418a6da368a9d30fcd48629167499c5d825da29818d8d4011ebb3719018f0ec3f7540f59250b42505de9716758526c8f8d4269c23c1dbfe7a1903edb1f14eea4a8d976443943378d9ff3f50149c3a68fd83859bb082f00246ad8476b49e3908f27e9f0cd3750362f85089ed027be9d6537cdb3586c555328266451ee75a4d7bc6366da5f4b8d39d89076beee3230b3d78a535de82fc8dc83c2e60c645fdb5a1dce1d923f1cc1e6546b24380a13bea5aae7d68737461172d4bca2ddcd6762c8942e2342b03ef4f44b39b2545470d26f808bb64b36636f9b4354427d861ce712f6a35b240f00aa170b1dc3026b65c644ea335d41b0166ece634079fb7f756f2e529f5db01409817e1e60bfe7607008a91b8768b97927c40d358dc0cf875a96808cf2550bc37759f3b4db6010d67a910dc72f2007f24b4ad424b08578b74ef8c4f6407453c513936d1fa491aa782be4b01ece96b67a7073bf587f18ec0e1fc49a2cdbf8e8111b2d25634d18b1465fa4076bca687a1a404b86ceb5fb46fa7f7c3f672bd753230461fc5e8eacd3a73f79f8dc118144b74980136f8ee5a3df19d41c36a7e78dc9092c702b64d8a9ed1d2f0d3c026ae8fe3f0a4e543c1c6ae041e4bb466f6300a7063e1919efe7ad8f290073430c201d7c421a76b135e206263f90ea811d637dba2e9acabf7cfd11d8492281c256d92bde3ac0fc75264e221638f3da7fd22fac8d7e47ea59152307c0099e67136143d06544374421a00c1f8278b386882292061a750cbcf1112e37e8463b6c88e60eb4f423743a9aea8aec7228991e9e63816189684d9e6d00c277726ed3979b60686496019265ad576b2fea072f1a790f9885c5620b0f668fb80b9e0239d342dd782c6e3477620919f01f2c1e4d99d0230f7df84dd2385659fd064861fc4f70c08e378002ac4487fb8edf5329c37abce1c4840c45250bf4c029eac87e5594eabf6f135315e63187350a02410d1ad3e2883cd6d97fa34a1a66d4bfd46a0e05a7faf493ba28cdd2fa93fdd73b2237185aa9f8bfbe2a91959d46d2461627a4e2bdf056c4fe5173f4459524ba7d34f1076312e6829d4e487c8c893000fb78452dc9206bd48771e5f7c9fb86d7f94bed2ec82556d6f120466ea8d938742072f9cd51f6f05dc81c80f1f8dd4b98d51f76d79d0237d5216ec4572503d352c65a173cf45428ef3c7199535a9a22ec2b539a896460d71e3b22541c44b77c340f2eb852f5888d294865150e9b8a30bc90272cd19c5db62631367816000cab84f465bdd3ad8a1e4c1f6fbe00b4367d4e0d10ac6c8baa97b277217bd4ff5bd6abef66fdfe31a3f1faf678f10c9eb572fab829f710a0c106b6316eb430f90db384b913f0b1c680e396e04d8aed4674eb3e507fe529ad19b34e934c30a0eec001e8c56cae755adb3ec6f360315238196fbd830c8179f2dd32d2c75f1f79b18384a04f71b3b3c776e375401d364de8611579dc1223fb3e87f5e83a7fc345433aea90247004c767bcf50c2809ba10137fbb28755a6361587f2029986511b8c5d64784f7398da6a2b1eddfe330dcb7331a2b453c6430172877c85ab02d9f3332512e00ae36e8260dea7a3c927b7e285bd85cb390560bd6f9a05391fd1756cf11baac9102239996cdfbc8ae150c85acf5f0b68889135e24a3fb05b0765629f641494d4d281226373fc6e5958d46ec061ca79b0d6020592417d135fd2949f4dcdb4010a0a5377c1de91138b0060db3ea0fff94cfba1b6adf5c8d9b05b728f20a463d8e31a84b61e423b8f6725856e3f57ce0f2d72124de3f541003cc2d7665c00242f6449c7e42c49eafab012423c94c906f7d67e519e9221bce86b94e2d13991eb7759b4d2692fb9e2e3972781f9c8827b0a3630b33a61c2b19606a047776709d11e36dad2cff69dd82c8b6e0765603cd026e6175517214a26d399879030017b8c8d4663c2e25044ec67a76955cfda1c35c9d02082819117b07f0e49a68e3e082b2fd18a143c1042396ec50280482ba90682ae39a02e01e1e1a1dbce1406ae6a95bf9485a1642061ca2269f156a3a8088aa740292004780931b36bb607c199bfe2d057b0236ea5954cfffc3d74108b4e09c3337cb68ad575e862389b301996677755f179b4182ad40e4523cff0a58d524ea9bfdb01dcf96d95cd98859730c5667663a4ca020b1dee11e884f4570a8acd0b29b379a64b75945f5f1f81b0af94c0e575b99bb5b8abbc542e46e6b1f25b54bd24858272abb021d94929511483d28e72ba263330e108bd8208ea77f253a9b2fc452b63d528dc764a683d9360ba97d04bb863f7c7716a53d437ff863637ebda6099ab20a78166a489538256e3556ccc90bac3bac051fb8aeac79fad27ad438d63accd28f5c877dd1f18812af3bed8d67b33d90f04212a1285261b7f2103ec36a70fca80227a4d96cd5f362720d087398066286b86528194c6efbe1bd3e911ed1b483dfc8438b3f5717fdc63674ebcaa52baf078d3c7ccf9915f470233de4d29aeeccd86f18c5236f5d212f9d104fc082303c918f68ac0d39b445b24e191d1a342b2c47a73bc7420f2c8914a14b328865b5f3537a74620242be9fbbd311d5554107fb72e46868bdf67ea1bbf26894127d43b367d937a1bfca2905e89c0a9001a8cc2c66af40a5fd1eb04af8161cf5ab53b13816c43cd08798c457449d515a01ee9f13253c2d623ce7b0858a8158aaad345995ead158c6e4fba5ceebe9179b6f0a4be7b5301a187feb8a018a3e46053f6d0479f6e744d346d92f2a965f7753d04bf595cd3f0c83e68eeb2aa3a53ba5b59f8f7de49d6e584f1f2d8f5f457e1f7336313e49b038ff61819268fc1a2fa09e8974f7d0f96fce22b31b1392641d2b0ccbb66d74fc5cfc9970e39df4fa5396b031d21646894e8638019e0233b46ec59f675c3063c22ca12d6f9040dd0c27295fb2c4c336341a827d3ca6759a5e381bfe56c3a3a97b3312fbcf162907f262462876a381f0aa03d382d9b3261cb606ce3775428649832edce5b2c8671df1766f9fec9e1001b90b57a510de2f38f32d4e291a9e83cb1670ada4c79b3de29c0e8db0bb78cfe70a337e6a992b59615d5cf28516913890f95b7884b54b36aab674f6feae818384a236cdb2dfe6ce15e90dfedb554734f429036458b6eeff0157022c55c71c7912970d4af7f824b5bb3e2101cc6f81b9afb45b2e604f758a14291f4acd79f75c09fc15b6b7d1a80ab217561994ec3392d54824f6ddb5259ef36836ced86e8335367d0b377bc88e7ea3991f8859a30ad709721fe96112c641de4c56210776e3209a8c1cea1f96f261285c668a2b5308688df227b572662cdc48351438e09188d34900133278de478c7f4112bd79506c3155bf6ceab1d152cb9fbf5f167ed5be451ac62d2c663be16c3ab433b578e95699a1461ddfda61de8751b86d4780cef2567c335db322979890a0d8249bfbf9bb76ea0747c5f29d207ca4b526afce9aeb6bc2dc37468c09bb39dfad7fb486438c58fcf65c867948b6e6ac260f6d71475f3bc390271fc176e9e04b0e5ba01cd303e7417e4d28c28e1af56ce10db31829ab260dba77186b6e97860d7c2d87a315c9d922272bf2f9377835763174a38336c722623552d74a1a53b015d4353ebc92525717342abfab61dfbbcc52729ee3f402d6b40b1528980d71f82b842225013a79e3df1d45489e78323cebf20b09570f6cf529f30c39578610da5adc14d07b45456e26707d023a4a752d3d511275e6975ee3e7d24e0cb94dc599d1df5d7b8c01b73037791e196e954421812005fa8b793e0ec408494f943ab4d9abe32fa5120f45c0f6bd3e6d784575528e2c73db52c0254b1d6b497c47fa3b8dd1083b51c49e0f72da4404ce3bd1957e93f722c2adda86eabee33d7e58c107f0f8cb3e8081238def1d004a98c4f387ee01c70ec1e3851f087daf0f58246fe6e6c2ec296f9215fd6f693321af25ee26ca5c4e7f20d0450d72ac3603d213e5138de6312b2735087fe93b8158af64ce2e6cd5da04d6ef06b708f99c3c5b122b5c841f936a57194eff64cd681bb112a2f221f7690339e1e97dede834212fbadc28efdb2b6f309c7b7adb2596077815f909a856e55385d0dd5dcae9823fb2902e560ec0d42a19cc3c7a8310d75f77f104d8ef2a787ba12fa41efecea4451b3b2c6b54ed164740cef0dc196ad06aa93cd4bbee5a2f78e94d09c19b0cd717718295be3d43b365f9b368dfc5639d0a00f1893e0616a840f34c7cf91cab544da6086a96d5112d1310c53cc50db04d7a4f013e7369eae15ada54caf0c6b9485c08b586cdcd33e011c3762d40dae2324302fd56e4931e1c43260fbc80473c4c568320323cc9e4b77c1faf500c435e7f082286f2c40f2df0179942f4ddf0605878d7283c05ea90f21c47d9c6e3cd0f007b8fc55ec04a88464fefb65c780f25744158d8361a217a1e4d790f0ae9f4d3e57643796cb5be18c25f708cf4a0ec6b2c6bb1f7730a261aa609e3ab463b7e5c5b1b2f1a45776dd5ff3e16d7ab95857d601ac589c803a025b05de08a6695a0022233e81072d226b5fe78f7b220fec63b8e60f59e00f8daa143096be757f73c95df18fadeae740b8ef40f8c4ffa5245ae235b05fa76c0fde5f146cd68673e5d063b736fc7075b16fc9465550e9375590e3c44c5fcf3421e1e1b141298585dd94a4d7b1586e47ea6c845079aefe9f487996024a5ac796013f8554f530c9151ab0ec00bc01889e0f3baea03481423f1f7f06379c8ccfe7a3c51711b3294d2b35a96b274d221cc90f080ce5f688257d8e3b9b963a91819770c3b4712775aed777361a2213a673ce7420b964702611c4057b600144f355c72af2a810c6adf1a959256eb35db87eeb4095f5a4b529f8a54e1f9442c5c02293e042f710f19cf829c0efe4b584c521bdea4b41e11dc1121109f2d2a706512c670d352cf5517dfcdd9e2f65a50ebe3a0341423d10fdec49c0cf19e9047060dc903c7247a0583c6f58482f8f41bb7d125bb8cf65b76e4d5910eb5c2634a90eb2c2ad3a9763a6a9bb7da19569219307e3c3d3bb42c0eb253e89cb689bb3f9e550c683436b760b8a0ae0ec07ea23a68ab3e34ffa18644173bdb269113f01f2088c23cb6d61a06c7dcf5dc623acf2ff6220562c7ef3e3edc51806f12def15b517111c743997b6e9037fadb9662a7520a0b1cb41853e70fc7011707568a1917eb998bf12908ec5ca896f3ffea1ad53e072d85e1055a8b5ca7df71bb4e7d3a061ee3c530ee987b130887a450b919061e2aa900d7fbc7ee4426e8980879a7ab242e06e2321ffad26e4e8d16730124e93f1b701b0782eefd1a2ff5aa28ce7c7360dc807fbffb383e237d6f896db07b430101a611f6735c5d1c03fc6015a4fb3d2ee549687f5bd5bc1ecd0874ed9b70964db3a82a748d6ad337de9bc3f89953c8775348ac061c3da32b170cd795188f7e6c6513c84c26b2bc4f1c9f5df699b4b821d0ec9a53c390300f4d565e81923e1f4e1d575dac1c159d5f8b5ce97ce0ac9135c5f8660429d1302ae2b8997c103de25b4154ec0fed9bc21a89f9c767a7b42f06e893bc9ad81a244ad9cd712b51e68f4e877242cb665edd29c9b371dd66682d2d776d9b5b0683cc2630a1e8ba0ced6b5c6978ed19f7fb6d76496d9c7473fe4e7061bc5d407d14ab02a61c9bc576221c49e1318c1184ecc972dc12a4732040992e10a7a6b070d4217e23f0bf139632ed6b7619ab5a75a00a74f4eb656a7037e2657c922ae23732454a540a3574abdc080d0110fd06943eb84fb11aa35c3a8cee5bd2259604080b345760f6076b6a95c816e4576a603adcd0444a79301c8fe91020f99147d1730d160cbbab5861c9b31a471d45c06e09b169510b24467124e83748a117c62b5681d64728f6c74ec6a4e75b1d5e970ed90b69255d15d3556a7be327e9222ff2ddf30e7aadd44ea7cfabf063893f362a6600716a525f7793abd44d5cdbee37e8d3da38106e12bbae5a11f54edc9034d4bb463e17503b5f828485302786f181bee3d9376377469778bc1fc46455c56f3b0821176c4fdf6667844974181e6bcab46c4bce4ac8974c02ddb7d36fff3c28b60b93cf64d9156f0473cfde2ed27f5a505410f809f72403a06d194a064e2a98b7df41f3759b65da56dcc9d768777ad45d1124c310bce041186fd0093fcb68519d68950d1473cfb5ee36a12d2db465e8171158e72999780401ff24fa6c88e9d0e1d9b2465df1909af5170ed124507b04ef910b154ed5497f1c17bab51399236fd877f9af4cbf620f6e8a045460486622fc3511626c00e149ddcd9c8b37db875bf39ff9ad573547d0d103593c2f0ce02c4f67472177c103d795b0d27f22d7d79302a860c04eb9ca317ce13370591e78e9adc9da9f22572ccd63dde85807c7f2a8dbec3fd86ca27a0832789e58716e8288c8162ea603c88ea62ad1dbd35e233843d4dc4c465d50554e43e3d29a472ba409a4a06f0f67b35aeca2665264395855a94f1dd3b146361ae693821519652aed5675e478fe4cd723df7ea05b0901f014ea8d284b2a580e3c927976841b62c07934ab5725e12fac0ad9be4dcf196ddd185d91d573c27418ae67a7e584d552f78240d9d8a256160be5c6cdda175a3e24249d5e26898d4bb7bf93a8bd3949273587b6d010f3467e6f7387efacf59a00552984c0e6762b7e108c909836ffd42f9d9f9853608a2d3021e00f4cfe62613eda6cab6b4b77bf415c37e09c83dfb46db849acf2a2b96035fd54e2c786787c52d5ae4136ac971c13a02507d7566f5300957d94b5b56e9b200c76679f5987c81d4471372a62823f4f9b3fad824e77206ba8e25d030c320743b59dbcdd004493195dea92e437289e13c2bbaf0be3e1917c96d3463ce4cb2a76797a75c4c5614f202c3820c7f6fb5d308270415182fc5f68d2c6b9d202a8cb6d41e495434c25b1230bd0371c015872647516bd550c7bf97526226a73e4dedc2afc71f8246f5f835bbf1d46b1c4426778abaab7e699de8544de0a1d2abb3e3f2cf40c208f604ef42a99191429c1aa391d450de0716a3c3b2508c3b99abea75f7fde1abdb722d717069ee24c80ca5b8277453b6fc81eb1962f49459824078fe90dba9507dc68f13f1cdc192d781045a552c0be2006e8d8622c7c719023c00c002e35a539caab59f0357b8ced05831e1f03a14564486ee3256df7335ff6601b5b171b5b446b0bdaa666ceeb8b5beb5da8656f6b3bf98eb663507f343d204618696917fb15d7254b08396101857ca8367d54243a9a33a8aa5963070c14c0e7385219aa0a8c198d7f74458b8aa46fc31f07494a17bb7e4c62ed3e5478d01837485128ae6bd29da963c75cb0dfbf334fc9271705cb09fff4d1660df8cac514af5b0e43397cc0574d6a9f5321e730925c46111d6118ec94c0adcb22fb3b5b20614d520aee026ccb8a7e6564d54921f35f2c4f4d47588a38b75dfb1947e35288c5c0b46e3a3b805eb3dca71e4d77408874273c3114f225f63de5ac70f9acec922f12d66bff902d9aacae002200567ad0627b7220a72074d29bbe30548f106506ef15ef3a5f2b78fbaa28213df348f6e66bdb0d7e3accea0e9d03cf42c28229bd1307121599c0d0720c91352fbf4d20ac37b5164cfe1933dcd51f6262fcba3a27fe642a05a6f480d4537f7434ffe53214db83860b6dddbff9d3363f795e6e7751570d3159241b07423541f97ea5ffddf0ec4e8677352fba21a430316e4af8881af8dd220eb5d8f1c07b43d52be44154d4594f8c0e1800e2d8adf04a0d156672d136ec897dde14c3eca339030e5a8f3d63dc5c1565859702f7fa4a605bdc002a1d49589e2fccd2b26d1379b221fdd3313c2eadea728427b361156e7d6cb36810a20fe5c44e2e6d970aaaa752014923fa2618232d2eea485e8ef400ba5caab9de8476aace170ee36a9b45f41c23d6b1aa3969a38470c51e73a7bcacbd2db43bb46386d6786155e31734b991e8219b7e46bdaa7f0c4ec2b0b66ae1892b44a0974f81a980aa013a498f4cbbb929560795433af37ad7324803a1d6200d7f210f5c94214267781b2dbb080cf1a6f508799f9bb3b90eae1b917e3752dd7fdd2cca6d5b184d4b986ef2a1f1c88d34be5ef166b04056cc2500ae78b2c09ecbf953dedc42834bdcba3b380ac0171de68d3ac269bbbbcfe27c696ca4393902a6f227e013f8b3f3f21d37ea77fd340f3d83405aabf0ef15f43d6de9679080bfdc3c7fbfed9be3da305c5fc1704e8aa8be186b1a65c3213299e414d78acb8c619c7838b37d7422a19f6576f8b04f79bd38e959800364db60a24d260886ba64fbe9c15ee987d62b49f6c97b01b2d67db594a80e8cdbf29afeac67112f4e191be5017a0e110f6fca9e42f075c71624ec873523622fc8d81ff6265f3ce03b0404235169012ee46ca625dd6f31cc686115d05499648e8413e3d7a4e73770acea623deb527453dd405d3782c30cc8f5ac713bb594332a978861c279d676fe353779f20df348462a3d0cecc3d210b8dfe31d088a044618b78dd574b3372607ca5a6cb93cff4502642c10778747116998a9e395b86e78c6829ec480e12c6e0ce8eb49e2c1367cdf9e1f6cb614be708f84c0f2a3e5444f5be1a5379d3bc41d929a1d607390f4579ed3fc0866fe3d4ec42e34fc2039cb275d6312fee400215cd901fe50321ee32078188f76e14db5591ef3736f06c8fc349abbfbf082098c63b29fe268fc8e805a4b148308a9544556e693e2288c6e9c1105c9b67722f29d6e75d3d87ed0e2a95374cd24f244f48b458b5af611d99b2820c30c923abb0883588aeb8382d33cd9373d36b4be4aaacc113e70017de9af48275548be238b1bf16bb63384d087f2e74d7e40b0f0af189418c17f03b5f8f99038cc5427e405033c224448747e2e9c9830584efea8ff57773db3a5e30b1ea764435cb46224e633ac7afc7153985ce9165de8ccf1b807c7c8752415cea0dfcefc63e33021793a744a245f7b5b8f55ef656345bfdcad4953c36a1413b804fdb2a62d8a108472f57068737e32e97cdca834334f94a3e00eb1e637f48b8c4d2d4e21542ad1e6998c27a74b29502f1769468d6adf84539255863c262a4d7d69e31b4634abc2595170313f27ed57085ee1fda03be708d44e5d4b564ff3f390c055c197439763c22ba0dedb103b8480527065f82d54bdb013106b6d08e857bc9c3dff825111b30abb403324072ec48ae1cca8c057ecbd6d981183332b0a46bcb7ddc12d3afa2d9cdc904c92209aa8e64ce18c3c3f689a4f806d15bf7380203a7810241a110e3b1761f31c38612c4cfe699de74a697e04b1bd8e52330f12f0a34f78f4cf423c08a5e35c62cd4c62eeacba142811676aa4f615d6d89f6092d8b1fc87161720e4bf5a5973d23920d2fe1f7cfeee2416df3ce5d3feb96c646944753413c9d378fb3329aa31480c676ad6e7d4f71b5f5c4b65243c0315e02a52f5f02e5d050c642e677e343b851a27484d6828d2986c4d1be717515b688a0fecab02d8c6c53b65377d5a6f62d5de39b6020b495348a745775cb7bbe3a23f680e71b8707dbe9f7deffca0b00d235044f72263a7a2be443553474f237cf6496bc20e9d0fe2914309648e5b57a7f73752f38d4cf9fa19f4344a123c3af13d061bbaf38de33ea0d866df5a0b31199bdc4a815dcf1155b08e561a69c4d05508175e6b89ee657be56f524b19e55ff23de55035f1bb4f0d17716b7f1b372b24f7ef28be533a705388306633dd39c334d19b584e159a634cc75154e87c1c68e36589522bbca29e0374fd42dedee3d02252c950487085c56dad8a7aa58e88d76bc882679a73110e8bc5a43c12dc402aab21766b4d334eac15b03f28481dfa74eb25d615a484c951bf453b0e15c1b3906c5fcf3906f4249f162f7d4a4cc5389134d0af38b35686275825ab08f83f9753fdaebb58ed346ff70036fe2c011304f90caada44ef8522e926581e2aa12d9756c6d14862f7208197bf58c71654b2264421b2fb4d65524182d1a57f6b164457d39fa8662d5b67ef2c2b71046abe0c3ed97e624b52d71a44e6ec35cc6407fa554613b3e5269a8bcc18f37f6b356ac40e2eb4faea08f8509815f4ee800729317d03b742e965933de1c8fef6ff316b0a721f4abb970d98b564537e5a7c013a815795dadc3e7ef7f108255c4f8672f0d068f9e2f54908d3d303be0033266ea3ecb0d0587b151d6f959b9db110dc1b1a0839dc866ed56bdda843176db1861af0e12fe9fa15b63a5b2a1efd3c9c1861364ff60a3db0137a8166f61d89cc6b6d4037e887cefc0867aa316531802651590f5b3bb2a571a054e549c8e06a50587dd4782b2fbd856f522508a4a63d82494779bf1dea0d94b705ca8d0b6082dfc27502fcbc61acb13f51d01c4801987bbb3b7e6c17ee27a9a63a225528343814fc4fd1cf638ea813d44020e9be8dbf8b3c7be7a0832c64cc1453b30373b46951de34ca4062a2f1a7fe6b692832c114e6846918ac4d9891cfeb04bb1041ac8689a972c8f2c27f289a8940a117948cffd567337f0acd169e76c505545ee7e16552e40e2d5b75f956fb6d7eddf30986c5a1fa1aa80d2b9156c0103fb7c82acab3a7da4fcd79a05c9f91227a794b3aab6d3f4009580138582653b86d4a36418ed1a3cb7c32a646b4fe628539d159f65e05445308f8cc8d4e907ed620320da7d6d2b14b1b17b6dd1486f407098401d77fb6e98d7077b57962cfe6f34f839919f3f6a4f31e0eda474f663f8203c583ca8fa657694881365f1c37e94c303c726e1225ebec210eb872dba23d0a3634769d4b1b63a82b30d172bf44d7e72471e87427526ad74f71eb82eee58da6432d28e9c04b00145fe666bd09a1539a362fb2b2754dce7662b11225cf1e45ba5ed5d06ce311d82772032bf346d81e0e1daeb3e268bfe46f04a04b725d26e47e2adfe4218d4082b75676bf88863d42c52fe0bdde959dae610f9f987ca2b57a671e5236d943c064a22c04742180930abd5c86427d6805e98d7145302cd8fe5a0c05596ad8741c09ef439ff56ed7721e836c25e0e38c0300e73c3db40170c735d25e812727293149407cadc5f804a79b1b2653404de18880fd5952153868077f7b2bc7cd589946ac9e6e205fdf3d08e29528d0281d87e8f1d500d63128e3ef288b2c41233dd94381e000dfbb01e85f3a6234ab6098de61f443475ea73ceb7b4580072c4c041a5a441b50f7e156d310135f11945c8e4fc06a8d35668437eabdcb7c673c041c828d7a425ef90a51f2e2ae6507d7d7ccd13495c955d6651607815f7878fe92413d75f85522d69c9ec6f52372492171f21c6bc3f0464273eced69e4e806ac58ab1de790a75d1790ab7b6bbbdb72b1eca8bd17ab512f85acfb9691fc700364797f07f7e62d7ddcfeadd99f5244616fe00e92339562005ac34d839258875deb5aa0f6b89e017fcfe41ef9d0b44171290a619e4d7e2a3feea548bd9d692a4f0cabb75a414920350d06cca8a851353c0365505c7400f251b9f1c9f9d8968c39f29212db0219cf7190f43ffd46793c0c6cfa48eac1a5c61d + - {fileID: 2800000, guid: f66c4aa44c09b6a42a2b5b9f9334d824, type: 3} + - {fileID: 2800000, guid: dcc0ed9263c0d524aabeb5f4bd75ecee, type: 3} + _Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7640733ce3e6d52283bf75ba0ec3738db268ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096d897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743e0f8591ae3c7fa2d3130b993d419467c3a1a11a336459a24f05e953a20def4426fb65fc8a58b1358f90d04e060c5c571d2b1d2df9baa98256d81d67ace3ff30fdb03fd7487f0de3b24b60f810b51bf247fb2b1b92bc13b5741d788d13165e2476a8c158cb8c388005461687b65a3ff1b24340358a005f80142ff99728e376301c37373b1d6f9dd45d64ff173d548421cd7a3aefd628aa7636cec3148a304701d0398480ecfb2ba1d13492eeff76bd706bc7d4932e661634ee528ba16386a5d2e222b8a926faf1324ea91eb185bb86b273cc874da44c2c8630469d658085c1a5814ff32331eba696b6f91e488b384552cbd92da6ff683e95e632696d9866c2d4553bcd3a41560b90932df6bb3de40b07741fcea64c975b168176f69bbafbd0e02659edc6f57fa421c4de43d1617368022761e988981c87c3693c4457b358b4774d2694e3f634120464531e71ac865af2011b8ba6fdb7a7f63dd5a236d4b39183f9dc945aee841be3402ad314c4f68000774658ced46b6504c174de2429b726e0c19a8b791aa5d085276ef6d2e49321474591be0b0c606851a79f9c5352400cf703e2433a7b16f5c2e6edf6435237e961b396ee87f91be4612239c0aa4233e7677e7a55dcb88d4107f070a9e49d5b59b7e9c41c82751f6647d3f927f2a9e42277d89e9df153fdca55f4b6bcfff42469d23fcd8dc3077c189625a00baf3af2a9114c7d35516e91e8c796f198b64faa45a7d76e4cc1385ae6d5597fece2223c2790767e24fa936e0676b0de32eca03e1ca4ab765c42d4645930bf57524eacefd8d1cb65bedc01984f90d2e25547c193f025f28bed33a98ca8b20b0bb6153fbaec60fabeeeb580bf6ce3aa12e00df0fe90e34887cee722e374a7fe70e0f5e22a61123ec64d22b53a95330f098dcc6cb6a2f3853d2248762c7c172a46c3f1a052d5d041cddcb73bb398821d6427d6aa47b4c51c2b84e0a356679245da0771895c7d53dc4281c57ca5c0c735c465ea5452b171e5977a3a788b62300769e73c717ea69523e1b1b6350b4123f2055d2455efa01667d0c20667fd04e4026c79132d15cd5220a5d361bd5a8be626b68deac856f7d7aba654bc01482cc6abd9562f4c608cd307a0b62c6c47d5753ecf0758b0a83ed7892cc0db4277b417c3d600f10f3774c4f67e5b9f6dff95a6fc92d2f12633149407d249c0605e7f6013519fcda7298b975a4262324caf69875d8821306b3d1e76f8474ed588871c418a6f4bc4de93852016a5c947150da992f0af17fc19603432768e6fe4375176058af2698f75295c034652546000a1f4747974a8bb1e79e1c627676cb950ee7484a337fe927519074615183074115cf5849624826405ceebf10f6c992369faabc7e24043374cae00a27bfed026ba65e77591e81f6560d89a621c206ce7802c23e58cb6ff915a9200f3607a97e250268104af8cb12e08f8380331778b4c0616e04788e4ef72839780d3480bc0fc008227d6a65b0a365dbc8b97fbddd5f4c93403c39f51e66c109c4892bcf8152ebb588515211c625b9c6e3456d1a197deffccd1c6aef77703b386d535e2778955975cec93474f3a3a69a0aff279d2c24dcbe87d7629dbcd92df98c8a5d8c391ec187611c171c4d84f6d6892f1b78499e0b49769f5050f8bcb8f59c3b0081ffcd2cd63e5102b6c306f3f331c7138dbda4432b96a60327908e715a9bdd7fb3d55a4a23ebc6694c1035d377e76274982a9943f3b4ea029432abf72c06a56ff67adc3add40ff1fd9bffc15f34ce503fb429a233be4797cb7f8e7ec20f59c7b038682fb81b64821a93bb1f1b121fc00fc74dfabe9e87372b8371d764605691d4f67d2a4838200775412b3a95892615a31dd92360e99d12705167caa00d52c1c785e963ca485fc797467fffb9c1ccb4a6887ba978dcdf14a6b5556660054877ee69621b7289dfe541fe63d59662974211d38bc87e56a7045b01f5905239d8536ef7de1333d8373368a6678a68f98e440e2358438110e634ff899f8f7bb07cf7e610748e30ba75e653b7aefb41de92a173c1924ed194c2501e1313aa48b7c7b6f36f745884f003439d81efe961fae321d3defcd2ad44368141db93ac31efc0e49f65f7e25a4a1c83ae5ea16fa4e8ee2706357e17b49a6430d70ce59f6c407a72cd3b85f40cff28765289346e92c6dc5539cab5fc61b92ff645c736a8c044100146dbd31f911dcbf7130845c2313d2c62294ad5a19a7e0104048041ba377059e69945a57e99fbf6540ebeef69fef22772ec67307a819189372540ebee9079c172a1a0c704785237d53ee65d146158eae6a7d4ade03fdf64f7ac7e49590007b3878052084e2b230a9170ea4444cb9b2a23a9fab924341ecd310a414f29647f2ac72d3a6b4c9ed6ee253f5f512a23b9c34787830d053f18345194c7386c622405e0151b77812fdd94d3038c0c7c80189b4071f86f0883dff9c509f64838617e3cf345414f4f2144676601e60754eb4f1e529278da79b4fd5c451e5d74e9da32cb7530f6c8a126a3e0d65fd51a59e75ea04528059aea48b6b832927baf2c20826420eaa225d217cf894167f419dfd2f26dc30235ee2b682ed387a104b144fb4b4a2280e9747974826cf783a68db33f77ea601dec29eaa438c8c69a528edcf1cbb9e341c39116721bb17028e6a7b1912058372f3162e76534c6c7d0addf11f38005b7e3659b0cf70f1dd66275ee426ef8da85fa57bc233e9148730ce9371feac373a71f203b09449ad1d0139c750f468458e687bae8543c2d76a4a1e1efe237f214611db8cca1323ecea5299c36cb1657c9877060884feb1f7af199965b368ab4080590f61d0f410a18b669ad8dd85441cb05d7b79d7775abb3d2cc51b547760ad0125bd394038b37277637e1e65d81a29d57bb555ed316909ff52db5cd00bb2ebfa14d7b7c90adc78aa07fd8b05c3a99bed65b9273df44030434d3bed1310428315681979016260ca9f3c5419d00bf03c03409195ae7551fa2c07fc16d0ee6499c57f5f9123dc62af3a7b39865fd9a0c7a377f2547fadd4a0171e4efa6749fab1d811df4f6a8260e0a21f5b323cca9a5267338ca603efe5e8554186fa7098b70f7f7851b14710ceda282e0960ad5e9cb37c059434d6a1b4c8f70907d7049a90f5986ab3b41c4c9a77014e822b197ac4085a2c7e6b2bece5212d1958afe95a213c410107e8efae3037601ccd77e0765183bb028328e704de7baf2ce236f4eb8da62c44ea1874dc19abfc4acb481e6e41b6c825951321b5dbb9207d68e33206bd8a7174a4246069f7981b2f253139965c41eb6700e57f5e371ddf5cc70eba0321fdf8402a5536e3a9a0d202f8f190aa808921260834fa28f4ecc3794503a1e9dd180e27c8073f4e8830ee5eb88266458d34db3e146bf4aa07dfca3c92bc29ad42bce020e3687188c96faf28b9631e88acf6f9112763fd490db82f18c2fc4334f9bfe37562866224c353757de4e29c9402ad16774ac42a5a46d6d22ac7a63a33d484d0058156dada6c2bb12bee7f642b1c9a1515548555a09289d5567f6670acb1a07c0fb7af86a800352f05682ef0036235b014a51364d4b9c83f4b516d637538dfcc3559d2d58258cc364e2a2d7091671815010c5b5532adffce39eee7619aafa26240bdd376fc7703a047559607a2aeceac1575cb45c59e348916d9ae918c3876c7446b8937f7af3d3e40e0e2eebf7ac52373abe886d1704f7c156d76ced7937e3a5457086b1b6486be30a89d1935a9800a5ee2bc117d197963514862d417cd8c623ec8e0f5398c46a127b8059e1a0c98e207b2ff12b8530d6e6fe1b0ba06916321547a085fc7ee48312f02121473a7a58404a63777da04e23b54e4498eadeffc30568e9a325b6c365e677f8b08a37795fb311c51bf5f7f4b7b68cd0ae3a5b9843f00426ae50c7229972496df5b78da97dd4db1a336bf4370294371709ef9dee984323cef5a02fb125775516b19eb69960970e1d8726b24bdb72a40c6b190f96c0c6eb8b1c1a1e8a05b2168c518bf6c6504014be468876e084a6ece7fd4a1f3d8cf7da5906e217182b41d7afa669fa5197a253f50bbebfb7b005067536f6875fc15406b699b022bda8c32998501696eea134c06af63a21ce48129911e88c4f11d927610a6353b7e78f9633b767b7e8396417d3f226d2460b75d79e971710d52c74049187779151f4ecb72b700de935f00ad269ffafbec75482838fb51acf3f913ee02493b99f4e3d4a20e886b48bb3fc43a1b8297bcdb128f507f7f5ab089c4027f0b0821e9cbc1389d7961f1aaf2dfcb8a2a59d158018ae0610cb914f8c7782bcf7bec3cb41dda6e5a4435353c033a435f4c30791c6aa47e69177d097a2ace9a0d73c22507a2166d4f372b9dcb54a45dd2764b536800f19a296aa7cc9be4e9841265d8373b9fb5fe9c62c9543e07b314731fcafb8bddfdf19b26fd9cfc4ad16b4d4f50ced323678dd34c48fa36ba26cfe245c045e41107ca981963eb5ce6fead6f345f71a97e1769793bd8c0d908d8aab2347f410a17505f561a68ec8752e9ba4a648b02189878605c2942dfc6b90f70be4638276440b78684011b8e172ae126516c0b3e7dd6911abb2161cb2a8f6762f409d1bf74eee074e30483e84cf98878f41a71a63ab2126a281e95bc2114a40b667d8420fca19b3f4d69a587a786994b5626c0451dc12742f66669a97d636908577783ce75687b537f4e0d5ba865ed51484999052b16d6d85a3ae99cc70d3d150063cfcffc352a1255133c93327c15a4ab176134fd6f346e4d5b29b052171b8d8b215d0c34bd4d7e737850e8ad95f429b07148df6e72126f973d1d575edb646d2f51f8efdff79011361d3f7be0b43f479900ff1f9f050401cb340349dbd81c64e457023866f854a08c6fa474380b0e9577237d0da8d4487f826b887bdb2d00b5b12949946eea57a98439f0361a8befe9923f0f1b505044404d31d568fd420472947f36af28367a57da3eed0ddf789176861572e880cb2e4b97240a854042255abd325d1b7241021c8e0990b83029c808363e27c389a26af07f40c9362f353f24d86ebca7d4189651d540975eaaa76665025d96bc3db6ae910e707a2c317f4b3639045c8758b5ded75301a73466fc02432f1d9cd0fd089e2b4624e48b844cbb9c893198af02edbeb73c6d103e0f7a2a116e425d4fe37b3930652fbecb2eacacf8b94343679cacbebda052f294e622c43fb00afbc6f06cb80ef83615322ff2888fc11785ccbc92ae1b0061516f9231e8770b7efa1e7c2019f7164702685f353d906a67992f2790a7f76e204a998c6b3e5b584a559e3dfd2eaf6e349c372b7b90f9c97f69ecc984b1460b0e8d9c69b28381855dc1aa8adcce679517c2f2f56fcbf39050d10d025191d4990d942f8bca1921b81d4276c3c57c5ab12f83e0c2be519b427ed4467c6f7b28106a43986ffdf360305f3bd8b242b755cc2bc59a17788a937461012fbd34a1c6684775575b1390fc6016aba0d8ca54cf5d5c194c899a5b2eed66047a5b4d0f266c4ca0a898b0b15eeb3efb2dcde9baaa0d308e1a1b543cceec456af40f15a013072e0d256afd670e0e459fb46a760328de5278743f0bf5e8f02e43adb943b12a620e34fcdc953f10c864d79e0b0fc79cb66d2c9d71eaadeddc2463d9d79c9821b674241b9113f6fa3c34137b9e0510436706378a108e40b3543671d1650d1027342971c73200635ded0c04786c8896005f15cae8d31d80dd9a785a3577fa8054df067516063b9610f12913e4b0b60d4a5d59a32567c6208da217adf8fd4e23970c5758721480f9247f252702d09a72ae7a5b6d2ea8a413e71901ba1e8f9e12a2057ad9585f9b36dd5f37a48ded225d3d8a027fa1e2f5ee67446fa7ed38246a1fec7c03aa3de5b020da70e69351fed9263758939cbbd336aa4f12a9204c823e1e3132106c4cc49bd1b81a642a48b475eae10cab25af00da3d397ddc99d6e8307e2404c4830e4673fbf36554d53661f2038842d184ea0955ef0b54d2c10299a1ea222350f3cc34352aa7361321a6060b6c31244ad9508b50884a1a2227275dd6c6306d71420e46e12ad25e233028659d4936425bbf39e7f768e958338ba09d12682103680c717c94c3404bd402521a9cb64a318b3be551a17685136271f4869dcdac74aed4036e2845521d018513f416cfbb7b426f284e4d73a40d79a222f94838160557dd6cc7b2db092e8e0252278a7a296db678452da55d2739d0090979dca72a38700e9e3862f4c965990623af3933680c336fbb300d179f07b73297bce4820b18d81a96981962d03eb0dfc7ab81d67363a1fd456debfa2a79525a7dd0a3f37f1cefc328e0622f0c2e9f7ce0edde4a8820c0345ee2c8790422ef1d45bfe4009b5c5fe3bdbdae93012e0974ce6e1a3d9a072fa27028ad9e1a74c006cf7f75cb13601f7cb33df7ba312b332feb3d47733c4e833ded8770c30a3fc948fda7c481b92a79d072690e2800737245f57eb2dd2d4c357efd4c47642e1e780c8b504376984e77c1c57600d33f543d61f9b6b888f214e54e22bc81f98e22016e1ee54caf481721bcf80ee748b40842aef11a9488990fe789940bac23327050e7776ff124a171e81e6b036f1cd26366e601d015574876082dcbd54354c4451297a13040dc051cf280cd89e3695f3549ce5a39dd9da508a000771ff076b43b1d4e0d27855ddc76e1e5c39525d25a61cd958c74f98b6751c3556ec09a19d369ccf6936ba3c85013f2e319c3613a2d33a715ed850229356de7bc6430ef1cdc06ba2dca2e3feebe6a1b607dea8e5b1077283a66b006596c5ec225525f2c80022907137c8e045b7348a87d945d53b520423424f84b4ad4001266d692e564a1c2655e53f2a1d89e7c3339e1f8763bf0f47646952b0887b7df23138f272dc88de307ba2fbaa6a7c21b6a573aec9623762857cb092bf9cccbed5a8b314a983956033ac6ff306aab9b1e08b19660c2a37547639a2f9e409d15c51042601b767782300136b25b23a79302672833aa632baffd0178ad3169f444d7503b20ac0bb6948033c862f855d16b0a2c330568d1c0283c6c9ee60236af38f20e26f4a238bff1e1434d22d57258ac2d1c48a163065256ef111cc0912f6db67c7170ea30dcc8d26c41dbda7a62ac36eb0f461911f22a1343300690547f8211b1029f46026d7c5053743521e12cd151be19d582e854a589477c2f60d7387eecbe137582ff0cc7a773686c85264cf570014cd33a5405fa05a7288e7e3e1b791af6479d3148b1ad4ead7cf651e71f63fb86616323664397b9196fdcd67e486858ef788491503bd7af6120182e04b412397477fa6046aa4b4c50564ab78d84ccf6e54e4060a2f44bc2384dc3465bc6becd8114b40abd3760663b2f1e587970c31a132149b673b1967f2b3727f96c91a8161518c85e303dc75212252472d6f349c88922a682f08bbfcc5434df851066faaa8707bd9ec7deb5ae1764c8988d24a937ee5e6f49eb262689586c4d9be2b39d86e07aebceb0e79068d85467ab3dd9c0d07458694e094f419f1f4608cbd4af6e35fe42b81339da8706ce0771968dd2c7322d1df1c5e41470d04475eef6dfc49429e663ab8092d3094edf6e1e10c0d82cf10e2a624960cce6ed4d7657aeec90260a7248b0297c48c500265ee675f65f106b4820050925dd89b24942331c2bb73b709528840888566e56ef6270bfe670f6ed663c09f374e31a6a410120c5851ed32166741f3123f81d0d4d5b0778b2b76645c645b6eeaf47fbb10d18c88736a8d1d08e4e59729027105e5a15be2f235d47756425004069e5721e792ec2c4405bbc09d335eb645ef4b59e34569599062bd46b5f3dec5ca99167a8dc3afa61664c1efe5937fea7b7542ba624600c1251d8174d595565036f606041ce4277db04acc717c76a40cf2e2db30b1145c8b779aba9fcdd54f7ef18e471062944da75cc07abd12822dbbb99471e2ba1580ed5d7e84486147b024f4a27001c0746f973543e3f0a9966df9c8565962473226f8e2963d0beff5f75b8f9a479fedd414bacb054299ce61891c2f758fe501a25c36db871f2a3753974f4b3f8033edf1f41bce6168ce1060b7642d30dc7a760392de0981849b0cb11de1538e1af21e3521c27e8bd96fb661e9853034f2f988d346b8634dc5a382a70f2d53976a8245b545f812aef8f1ecf2847b6b09cb41a4075a36c4d3555c0ac1b03875194cb22394352a7514e3d823c75555c2311e9c624296b3c2bc429da0061d50eed07cc3b5c237e6d4a0cc9f2381fcf27744e1b42fa37ad7b00074efd6c2ba9b37a2e9534a86eb8478e571131f35d8bb40afe994db9160a245b513b55d47ffee19bea88f57504d0e295d4b3a226226f5d7d9af36e925a069cdb8e26a8cc0ee4f1a7d06af72a7fd5f131831c713553b5821c2228c5736c73f6e3eb1ae7dd27ea78475ab509737734fd70e49f15766b6787d9a48ba9e55666144360da159911edf6926b476ff6400a6baad9c9a8f4766d4f84930e399b6c5f9df5a1c6129c1d645ff8a8820b23287d19aef754bf1f4221ccce2a9a2d1f256d00f25685aa8508317389954fb40c788d53ea0b755be71dbe3881f94472833640d21683fe7aae2d94a5c6e1358af22bd9469d474214b03618efeb42d380b25c0a3f2bdd35708812a5bd9f1a22c853482cac20fdd53cf42add2093f17194a615a9dd158b492f9f68bf8aa2857496144e635ce8d89f4b78324b00ba55037a84389b4a8ebb4c370104f247c0b56690497334e28e15abcd750b5747404974496443f996de40db30652b5ae4e6578bc3cc244b2e8ae50899e431d5821193784b793bac03bbcfb1099804849d453819e27f1a1464fe46be7e3b6d7a106a581ed1b30f96545478f7038d54c78f626b54ab1848022ba7dc49c0fa2bc2d7aa5e61c01a555154a3c48d07220f29557fd0e330e626d74daa0cd5283a554f80b620582ef2058bf2e500f7ab450a4eb6b3f44029470ebfd18814160d7f27e5b28af2affd4958478544f04ae62e7d93b45a8cdb2e9678c9c56187a6deef66720d1b4520535b506d5aacbbe457c45bfffa7e9e4c0cb4144803ba745fd0fe2674ab7e3ccae95d1911abf936db515d1f7642785fa3714c65a7f903e266190e625c864639d8879016649a5007f914106661d9fe1c579f83035f18e3c4ec3f80099d9793619796f711b262c23dc2545f6eea9c4340182aba430242d9bfa3cc295c1c596b6281aecf08d10f69f5dd45400a478a52767c3fde71dd4f64da70b7b419c79aa7e3403e0f3ace3b112894af204202cf062e1e9fd9247cf985314af497773c7c448813dcb4087b18a8402db6dd2d3021dc3fbee338668c3497b847220f26a49aec176b982f21830ea9374719523b1c5802281758b857bb21ebb88c92b062d730636c363a3d690d443c32729051721fa32b60dbc8c14be295d38d84e7ad0ea2b9a0e9491afa556a94caa36a14352b308629d041eec15f0e51b134f235120b0fb42bd3cfc44404562a34906d9b490a3500a2024222324df840dbf768c663605a2a4ee0bff7046bbddad894dcad32579cbb69f3d8154d311886247116b3641d8d95e997e92aca2c050d4567499e715a74325cac5c6f884322e206b9e4897e0976bb0646c49a6d3979690619a54b8479ec361bb7efef86031d2d74062410477b71c40e7168d5690ea19626c576a2e9285d8ca41ba535f9654209299625671569df757595a6091d15ce0d1659c9c08c40169da8976b2cd659bf74b472feff3407547018fed3ac7d67aabae8b24c532e036a9680774082020bb43028ceab54e83226f052c62674eb6ae1be124ebbdbf211a4b708687fbcc62972234aa384afbc56d1b58b5c0168dd2182ea97826fb34f6fddc68e9da3ae4d1cb77b54022a48e6707b682071674e120b6bd6196bdbbb46258d4580b5c2a6067f03a8a48514daf6352ff7f8f86d21f772b4820879c7b9f703342e8f70c99b332b63a07410f398206fdfe43ce3c24db8513ef3013f9e8cb7436057ae19b479946c3c32a4f16af79a1b639859abf5dac619753dadbc9c72ca2916cf4f6416f944598857e10a0d554445a71922faccf4b17b6e6a700ed8aff751fece083947fe315cdeb2249df8bb0b3481f3158350cf5d22e22c095476c97f374f330d3f4d0afe5a4b7ed87e184f742976a48ce59a7401332c2b571af4dce51433ec4ec5adcce7740f90c82e0821f5305fcc35e4a99b2e3dcabfebde4d1c992864ecb1049d39d74274fe0cd5c3cfc409cad9853fee3542321b8c8f6db7c5c12ad60f6c0b2c0531250b0da75758fbfe6583f41474965a3a2fa97e1f2ac844f9513de1abd33ccf363b589fb6042266751f72d60f5326c93f7b2bc29e5119f9a24ff807e589b0d4d6532a4fcc36103e52100cc1480dca5ad5062127a97a31e4215efe66fd2a4bfecf610144d72902f79568eb51b9a74f6a7b52dcebaad77d51840f8fd4cc88c383a40df3e60c8683ac0329934065829ec9ae67e3500637a8a6df51361965d1d5f35a6f0b3966c988fe2a77efd369beb707ad3a2665a6737d6c644bf8454263ee2a017a642a889b9d1a211bd970d883ef62f62f6c2af73a99ceec62d51ac2ce408d663a2e10a67380ed624087c14dee45e73b69b2ec093bcd391e693e256fb8ddef5c66d713b000086ab05a8c38c05a1bdaa71220a6e3ac7cd5920bf33cb1a65d1a1d761fb4c558973b721c629c37fa06867a637e5d97360cb0ea01805b0dbae3a84859563679cfa000aa5be800b6206267fa7848eadb444dab7d31603826c3d148c70be490a3cf0daac37d4dc3e2f398f49b17619403cd848ca65548b890982619752fc8c204f30bc98661265d91118e71ca55d43e24654b958f71c907e93ac4a35c33b24cd4291057f369f25e0b1ee2471c4783e66c643ddb7a5c53752b04e04b9d35b9c45f419da0457cb6448c13758e710f2431b8dd36f7f571c7317b8682f7493d04bf9be117255523d3165107b098193c051be0af93bffe4eb9d17a6c25bff9527135f0490c700802246a4eb2b703dd2ee8c1756227072e443eb36416603eb714e4016a855730cf7524e3d3fe0db10649f34b54e6345b7a799ccbf5a7f40e5d19b33996b96e638548f2ff3e433330360f4651dceb162f1f3f7ce4ea8b3b28801486bab14747bfb8703bf428cb6541526b96e561a33271031d59d534524d11833780d5418681103779996cb1210753d939927ff555c6dde213b894a01df40bbe4b87a0b3c47c2613591ddb0ac5c0e11653af6ee4cd07d9fd5eb8553e15b0546d7251995657f86149486db0c7142ce3ac2a7f4dcc62ef8b52525eabf3d817015771b783e8a6c792b44edc649fa9ed16cd2b58ec6c01de2f9e22eca8b5a35422606ef9c7a25705f99d10021b878aeba96446dec7812b95559318220bb91edc10fa02c50eb1267376265d505b00c3a814376a0dfb811ca38c045d358a7910b3bbed111689c6dcf73ed3675edc23c6ab309036bedbef1e7121a150ecf10e1603ea556c911152e0b1a58c4c3217413897c14d64e54fad2733315f0c188a3717b31595737a48cb6622507b62693ced5adf69b9523e7231b33c2d385f4fb937d8918a6647534a40b00918bd3636ef6f90e046147e4389d840e4e136597ed4e897e75d2f222a5951d55695a4264c0416d36237bf085a46e3e49d58d47213e7323430264f6d2092ba3998ead4521b4d731607f644496c0fc35f85b57a2e7b203d919c900972ab7b4b2f837a8f441b35ffebccea7a09d5845fc016510c69e873418853bc4a75bbfe3d7cbd8b3219a0077abbb566fa659c47bd1830495b0288b5470f3907f05e1576d0325302b45f4986dff129ae4b4e6ea6239a7a62a6055a40f4084422e059072759c06a38ed66935d61b7284d2c2697075e6d1caa1c76e32a726c09435b26a585e902558be4364743d2283ca1d25793e461b37eb28a4e43cfdd40c5815d29b9875dae372f7c21ed9426d8d7f33a7afccafeeea40ea5581038bf86ada47038a1fc6fb44424206397c03915744e89360a5843fa826f8538d24a419011fd316efaa1c7247b7ac920159da91c2a6f1b3d527783ab9e894a1082a7868e65b175657135e52d799a45708e220e1f19a262429a811e777e23f27b152759dcfea77963d7bb540b75113b49331339c1986a29240bc9f5e492fee64cbc95e6aebe978e369c72485d4d57cc554297bb9516cf1d56ff35d135b295d02aa2a14edf2a8d8a36a3705d0ab2877161974a272ab97b63127890acf469c4e932be8d4453f713d54af47bc879d3d7f7773c906097915a8f1efc9e98661e693267a670b3dbbde1957c8b23c8c14c16c05078dc47269cae5f18e29da7a78591d376b79ee0bc742ccb5a061cf3926e322e11a01710bddef33555313407dfc61208064f5109ad3504db5b575dde7f443355143546f8917fea673c698beda933ab210d14ede2c03bdb4763c54a9a7fea4aef6375e3557fe689793a47babc55e8ced753c42e6cceeaeaaf59ff95cd3450e8514b7a50344f55a1266299e3867ee00d850a8cb9444421df865f6e518184a951755e6970cf390227a96455cf67ce702d390c1bd7c1092c956d65362b4358dd55f315a71b19af2240f34b9e57670eb8ab2f3fe88b962e7093ce2dfd95fc291baf780024add8abeb7516261b89942ad1a15375fc034068eb22853aeb46acb83c1c664d2f98cc997c24d472747012e6fea35b5c4186241eefe1ec473213953222cf6338111e05c62b450620284c22a3ca94c6725ef6053cbe7bc24e557a9897705daf5af42609e257dd787873ba095c41b783614c22d32bc9267a74e15372b0ac6fb07afc7d97f09da9c93b6e7eae78851f8f63f737e39331db241aa17d02036ac7cb020b8f59bf4e74fe5da76743b487fd1000e3d5ba758c1c4828a2b1911aabcda63549b18214784eb17dc7791336678f6d5c93fede6af3a98912473061ff061909740f78fe388025783179c7c3f9cf807012bdca785211c3bd5fd98fa456504f7b1f7d78ba1f715922477710f12be5904238a173423ba0b6624abc9e60f18122e137bd1c89b7c4707c63a931c921b5e845682d234a23f3c08139167063d2f930c5660fd617fde605033008206c9013be6a2c5af71fa46c042b7d9fc2a2540ca96a77949cec212fb77d33277a1ad253f0262bdc9079011121fa0aac9a5f2363af234e761b03892eb602118aad3419e0012f71eacd797c2f68654a69093335e95e68296396b7910b4fa62472977341aaec1553cbd03a9636a61e0cb6b9212482cc2816165d7b77b9c07d662854eec7dba6f555e17994e7dc2d0c44885524add17e5d3ebf8a2a4d709d99754ea06ee2b857300ec4cb06fb610ff2175037ef649bcf955a4dd279992ebd3a4421e0ca83631103207acc8e627aa6603083bd03c651ca261dc936d0742e35c37ff9b5247fbb904c61c6f02197a2082a0bce55e3133fff6a554552b3651e87b150900d5c2fcadfeb130b650061a88f7a2d9f24bd7be7284106e186c6962218bc4d5e8df86b5404be126ad009dafe08ad2a331ffcbdbad3c76733a9b1bbe6ab0f0d574c40ca77197d5d1d2feee9e099f82726649bfce4006d31aba0c855acfcd315e116324a4977a24c9d59dae9c2b04765b18994820f132957df0e7517e2d3091afdfc360934bc8f6106e8993dda56f405a79cf8ca6ea9db0c41892a57ecba2f6f9c0b133985c1cf6ee80984d9851483771a6f7046da3fab59d943c8aa9237753fe8f65f30bc45801a33754e87d24a6d2bf94d8ea4d58ab55d5fba11c98a7a014f6bbb0d704aad455fef8a784f8d332b72d79da4e0c519147153436f89a8b65b5388610c72a721894c072eb44a1165cf2c726060d8e11eea7bd07f1d073dbcb6382f25c72b26b8ca0827f1e7f4ce5f83128dbd05f7e9cccb584b87a22804810e4b8984e514615cf92ad5974e0fc90a532ffdcf6b043e51dd03f11fe09e16a1045701336c4a796fb1303b24337fe524de41cc8dda2c12ec7636591efa7fc368bf3393f610fc769da9721f3a4062845ce933bf61965c83cf9513bd36a3986a30f42d9b001410eb1e3568374d0ed7ac13b149082e3d25ff1bb7638b23b9ad4142dc12b9ec387cb727b860d4d2dac93e4298577ba55f6792e6d349b9779c0fd7e2aa782a2091994c2d011f76dd502d41ed2449769dce641d8a7f2ce711cbd03b38c84884ad0ca02cce5c57a77ef1b495a60859631966c6ebbaa460a164b23a6230e351a599b0eefac57658be88f46484cb3d721b2534559e8e343e526d00c81b22f5279fbdf0030ae5a0615ef2f89d39bf236c5edbdfc303724d333310c0973ac08b1f83e3fdbe44bf82347b2d07546a68fb6e4b9327f601b82b10f4dc2e06daf6d8639826e5a93d9bd71d5d1447d66af9c865f3d1b259666be236b9edb320ed890f7a54a3bb438351301a6c455415ff017b0413c91308437ffd2cbc509dd4b107f418dd3d7e38c17b1e5ea198c4abc0f8354972ae34b79c18be2a5b71002b10fa3464513c39c283424271e87167aaba526c4b79189cfc2cc2833b7f53de507af34e6333d60403ce08332f943d60f180961a53de4ca42997319113c074432f63f2f6244035226ea98fe57eb43398109d6d45156e32722e4f25cb0146f04359c404cb78cd7bcf494777034d6725756498807552302dc1317fc7d51995dfd747b374465098e0bcdd61043109d0db37d65098973b7bf12a97429af904594a20d9b1b5fe246dc6fc793d53b43360cb025affab6902489cc2a49fdd9232dac18316e357571b24edbde96aef8727c208c8886861fa054cdc6eea0ca67a49a7d0ac012834e848dde2c8ed1180683723e9e296140aca793a819d3f39bdd87c7374913b9b895071207fab85980cf33445a50ef688105e62facdc5552dd87d6546ba9f7aee5c2d52c6ab896aa1bb1e4576d2fa94afe1f462162e42cec3fb4407fd11cb52ab6e231779bb30dc87f3c13eaf80df5bdde9b66439c29b3fe6a07035987e984d788e0f1bf6111cf3b017db226e041f431be9291939d0e7172d1cce182d6675058b0eb63c70049a33323d4c51624253153f4bae7da7b18548752648264303c749a2d6965e4ee3b420845d4b75e3c74a153746261e470853c36c004d4abb7476350496f374540b37a369710605fdfa65aedc33ef762be591aa295acb4dcf0024072c7e864d2c293fd4f07d4b2afeb2398e656191787c00a016d8616251d785d4684dfed97e7417da0673c3675365995289dfc21730929c832c1e9d26353811548aae4c87048cb8027d3b98eb3f980c848e4b14cf14935c2a4e84539f29f1a4cd616fdca419114e1498c5946c2b87c293111897ea24bebfe3f5892a76371ad96ee0654dae449895830300c9b02737aa2ab8184fbe59baa91f2fc099a23b3bb34d61fcb36f2a70d8a9ae1bed240c0fbb2c34542f506898c89a0f6cdd043139bec84c7b4f2b14e6aab8bf59f0c1327becc1843928700a9d1a35cce69f414edcdae6d9b57087406fe7b156886ef158086794801b7ff70fb14216697b08047a13f964cb296417148bfd0cde25386c2e29dcd34e33c16a5cd1f628735a1ec4661dc8bc70f5dad06b8057f4e6742aca78d5e73f9e35b646518e08f9333ca3ba6c39a5fbeef5dd240454c03223327b17582bb09d72df26312c0f0dfefed403a82264785230d1237d07c33af1f5e969830a2051088c06488d128d3102fc23dd264fe7f04046d718794ed35b515bcbc3bd786ef6e1d9f4cbd6540765a4a02080e35f61410ef9293d3207d8b95f6199e9de368c7594e540ffbc1be714b3c342e69052880e42f32e495d31c4da003a6c75ba10bc24d369ea375f627c0d1fc20f0ab5404ab1d98ba6ea0842e99cdf99017e505c303c80984505c250521f91c496dfbf3170be0f4463d0952e1c90518716f96303433c0cb475b27a441277223a843226082252d6bd90f307012f51844b4cc4c64b839407d2ec73a621c7accc1352a4554eb75a64c423a5724fccf41d39c93a6f4cb1d7b7ef2b531b69f8f7f6e427f4af2da7d302a6298b6e28f8a8f807a993a8011b18c42a5c457a0b75cdcc2baf8e273fa44a92f637c923259670182cb3dced654ff4c80f3084d113b2f1e308a86628697f46540bd960c61bc5166c14d3b2a866209824453ae7f028e45956d653d33230b8515505ce06c14fbbe4d346f0e5e765994a28418a6da368a9d30fcd48629167499c5d825da29818d8d4011ebb3719018f0ec3f7540f59250b42505de9716758526c8f8d4269c23c1dbfe7a1903edb1f14eea4a8d976443943378d9ff3f50149c3a68fd83859bb082f00246ad8476b49e3908f27e9f0cd3750362f85089ed027be9d6537cdb3586c555328266451ee75a4d7bc6366da5f4b8d39d89076beee3230b3d78a535de82fc8dc83c2e60c645fdb5a1dce1d923f1cc1e6546b24380a13bea5aae7d68737461172d4bca2ddcd6762c8942e2342b03ef4f44b39b2545470d26f808bb64b36636f9b4354427d861ce712f6a35b240f00aa170b1dc3026b65c644ea335d41b0166ece634079fb7f756f2e529f5db01409817e1e60bfe7607008a91b8768b97927c40d358dc0cf875a96808cf2550bc37759f3b4db6010d67a910dc72f2007f24b4ad424b08578b74ef8c4f6407453c513936d1fa491aa782be4b01ece96b67a7073bf587f18ec0e1fc49a2cdbf8e8111b2d25634d18b1465fa4076bca687a1a404b86ceb5fb46fa7f7c3f672bd753230461fc5e8eacd3a73f79f8dc118144b74980136f8ee5a3df19d41c36a7e78dc9092c702b64d8a9ed1d2f0d3c026ae8fe3f0a4e543c1c6ae041e4bb466f6300a7063e1919efe7ad8f290073430c201d7c421a76b135e206263f90ea811d637dba2e9acabf7cfd11d8492281c256d92bde3ac0fc75264e221638f3da7fd22fac8d7e47ea59152307c0099e67136143d06544374421a00c1f8278b386882292061a750cbcf1112e37e8463b6c88e60eb4f423743a9aea8aec7228991e9e63816189684d9e6d00c277726ed3979b60686496019265ad576b2fea072f1a790f9885c5620b0f668fb80b9e0239d342dd782c6e3477620919f01f2c1e4d99d0230f7df84dd2385659fd064861fc4f70c08e378002ac4487fb8edf5329c37abce1c4840c45250bf4c029eac87e5594eabf6f135315e63187350a02410d1ad3e2883cd6d97fa34a1a66d4bfd46a0e05a7faf493ba28cdd2fa93fdd73b2237185aa9f8bfbe2a91959d46d2461627a4e2bdf056c4fe5173f4459524ba7d34f1076312e6829d4e487c8c893000fb78452dc9206bd48771e5f7c9fb86d7f94bed2ec82556d6f120466ea8d938742072f9cd51f6f05dc81c80f1f8dd4b98d51f76d79d0237d5216ec4572503d352c65a173cf45428ef3c7199535a9a22ec2b539a896460d71e3b22541c44b77c340f2eb852f5888d294865150e9b8a30bc90272cd19c5db62631367816000cab84f465bdd3ad8a1e4c1f6fbe00b4367d4e0d10ac6c8baa97b277217bd4ff5bd6abef66fdfe31a3f1faf678f10c9eb572fab829f710a0c106b6316eb430f90db384b913f0b1c680e396e04d8aed4674eb3e507fe529ad19b34e934c30a0eec001e8c56cae755adb3ec6f360315238196fbd830c8179f2dd32d2c75f1f79b18384a04f71b3b3c776e375401d364de8611579dc1223fb3e87f5e83a7fc345433aea90247004c767bcf50c2809ba10137fbb28755a6361587f2029986511b8c5d64784f7398da6a2b1eddfe330dcb7331a2b453c6430172877c85ab02d9f3332512e00ae36e8260dea7a3c927b7e285bd85cb390560bd6f9a05391fd1756cf11baac9102239996cdfbc8ae150c85acf5f0b68889135e24a3fb05b0765629f641494d4d281226373fc6e5958d46ec061ca79b0d6020592417d135fd2949f4dcdb4010a0a5377c1de91138b0060db3ea0fff94cfba1b6adf5c8d9b05b728f20a463d8e31a84b61e423b8f6725856e3f57ce0f2d72124de3f541003cc2d7665c00242f6449c7e42c49eafab012423c94c906f7d67e519e9221bce86b94e2d13991eb7759b4d2692fb9e2e3972781f9c8827b0a3630b33a61c2b19606a047776709d11e36dad2cff69dd82c8b6e0765603cd026e6175517214a26d399879030017b8c8d4663c2e25044ec67a76955cfda1c35c9d02082819117b07f0e49a68e3e082b2fd18a143c1042396ec50280482ba90682ae39a02e01e1e1a1dbce1406ae6a95bf9485a1642061ca2269f156a3a8088aa740292004780931b36bb607c199bfe2d057b0236ea5954cfffc3d74108b4e09c3337cb68ad575e862389b301996677755f179b4182ad40e4523cff0a58d524ea9bfdb01dcf96d95cd98859730c5667663a4ca020b1dee11e884f4570a8acd0b29b379a64b75945f5f1f81b0af94c0e575b99bb5b8abbc542e46e6b1f25b54bd24858272abb021d94929511483d28e72ba263330e108bd8208ea77f253a9b2fc452b63d528dc764a683d9360ba97d04bb863f7c7716a53d437ff863637ebda6099ab20a78166a489538256e3556ccc90bac3bac051fb8aeac79fad27ad438d63accd28f5c877dd1f18812af3bed8d67b33d90f04212a1285261b7f2103ec36a70fca80227a4d96cd5f362720d087398066286b86528194c6efbe1bd3e911ed1b483dfc8438b3f5717fdc63674ebcaa52baf078d3c7ccf9915f470233de4d29aeeccd86f18c5236f5d212f9d104fc082303c918f68ac0d39b445b24e191d1a342b2c47a73bc7420f2c8914a14b328865b5f3537a74620242be9fbbd311d5554107fb72e46868bdf67ea1bbf26894127d43b367d937a1bfca2905e89c0a9001a8cc2c66af40a5fd1eb04af8161cf5ab53b13816c43cd08798c457449d515a01ee9f13253c2d623ce7b0858a8158aaad345995ead158c6e4fba5ceebe9179b6f0a4be7b5301a187feb8a018a3e46053f6d0479f6e744d346d92f2a965f7753d04bf595cd3f0c83e68eeb2aa3a53ba5b59f8f7de49d6e584f1f2d8f5f457e1f7336313e49b038ff61819268fc1a2fa09e8974f7d0f96fce22b31b1392641d2b0ccbb66d74fc5cfc9970e39df4fa5396b031d21646894e8638019e0233b46ec59f675c3063c22ca12d6f9040dd0c27295fb2c4c336341a827d3ca6759a5e381bfe56c3a3a97b3312fbcf162907f262462876a381f0aa03d382d9b3261cb606ce3775428649832edce5b2c8671df1766f9fec9e1001b90b57a510de2f38f32d4e291a9e83cb1670ada4c79b3de29c0e8db0bb78cfe70a337e6a992b59615d5cf28516913890f95b7884b54b36aab674f6feae818384a236cdb2dfe6ce15e90dfedb554734f429036458b6eeff0157022c55c71c7912970d4af7f824b5bb3e2101cc6f81b9afb45b2e604f758a14291f4acd79f75c09fc15b6b7d1a80ab217561994ec3392d54824f6ddb5259ef36836ced86e8335367d0b377bc88e7ea3991f8859a30ad709721fe96112c641de4c56210776e3209a8c1cea1f96f261285c668a2b5308688df227b572662cdc48351438e09188d34900133278de478c7f4112bd79506c3155bf6ceab1d152cb9fbf5f167ed5be451ac62d2c663be16c3ab433b578e95699a1461ddfda61de8751b86d4780cef2567c335db322979890a0d8249bfbf9bb76ea0747c5f29d207ca4b526afce9aeb6bc2dc37468c09bb39dfad7fb486438c58fcf65c867948b6e6ac260f6d71475f3bc390271fc176e9e04b0e5ba01cd303e7417e4d28c28e1af56ce10db31829ab260dba77186b6e97860d7c2d87a315c9d922272bf2f9377835763174a38336c722623552d74a1a53b015d4353ebc92525717342abfab61dfbbcc52729ee3f402d6b40b1528980d71f82b842225013a79e3df1d45489e78323cebf20b09570f6cf529f30c39578610da5adc14d07b45456e26707d023a4a752d3d511275e6975ee3e7d24e0cb94dc599d1df5d7b8c01b73037791e196e954421812005fa8b793e0ec408494f943ab4d9abe32fa5120f45c0f6bd3e6d784575528e2c73db52c0254b1d6b497c47fa3b8dd1083b51c49e0f72da4404ce3bd1957e93f722c2adda86eabee33d7e58c107f0f8cb3e8081238def1d004a98c4f387ee01c70ec1e3851f087daf0f58246fe6e6c2ec296f9215fd6f693321af25ee26ca5c4e7f20d0450d72ac3603d213e5138de6312b2735087fe93b8158af64ce2e6cd5da04d6ef06b708f99c3c5b122b5c841f936a57194eff64cd681bb112a2f221f7690339e1e97dede834212fbadc28efdb2b6f309c7b7adb2596077815f909a856e55385d0dd5dcae9823fb2902e560ec0d42a19cc3c7a8310d75f77f104d8ef2a787ba12fa41efecea4451b3b2c6b54ed164740cef0dc196ad06aa93cd4bbee5a2f78e94d09c19b0cd717718295be3d43b365f9b368dfc5639d0a00f1893e0616a840f34c7cf91cab544da6086a96d5112d1310c53cc50db04d7a4f013e7369eae15ada54caf0c6b9485c08b586cdcd33e011c3762d40dae2324302fd56e4931e1c43260fbc80473c4c568320323cc9e4b77c1faf500c435e7f082286f2c40f2df0179942f4ddf0605878d7283c05ea90f21c47d9c6e3cd0f007b8fc55ec04a88464fefb65c780f25744158d8361a217a1e4d790f0ae9f4d3e57643796cb5be18c25f708cf4a0ec6b2c6bb1f7730a261aa609e3ab463b7e5c5b1b2f1a45776dd5ff3e16d7ab95857d601ac589c803a025b05de08a6695a0022233e81072d226b5fe78f7b220fec63b8e60f59e00f8daa143096be757f73c95df18fadeae740b8ef40f8c4ffa5245ae235b05fa76c0fde5f146cd68673e5d063b736fc7075b16fc9465550e9375590e3c44c5fcf3421e1e1b141298585dd94a4d7b1586e47ea6c845079aefe9f487996024a5ac796013f8554f530c9151ab0ec00bc01889e0f3baea03481423f1f7f06379c8ccfe7a3c51711b3294d2b35a96b274d221cc90f080ce5f688257d8e3b9b963a91819770c3b4712775aed777361a2213a673ce7420b964702611c4057b600144f355c72af2a810c6adf1a959256eb35db87eeb4095f5a4b529f8a54e1f9442c5c02293e042f710f19cf829c0efe4b584c521bdea4b41e11dc1121109f2d2a706512c670d352cf5517dfcdd9e2f65a50ebe3a0341423d10fdec49c0cf19e9047060dc903c7247a0583c6f58482f8f41bb7d125bb8cf65b76e4d5910eb5c2634a90eb2c2ad3a9763a6a9bb7da19569219307e3c3d3bb42c0eb253e89cb689bb3f9e550c683436b760b8a0ae0ec07ea23a68ab3e34ffa18644173bdb269113f01f2088c23cb6d61a06c7dcf5dc623acf2ff6220562c7ef3e3edc51806f12def15b517111c743997b6e9037fadb9662a7520a0b1cb41853e70fc7011707568a1917eb998bf12908ec5ca896f3ffea1ad53e072d85e1055a8b5ca7df71bb4e7d3a061ee3c530ee987b130887a450b919061e2aa900d7fbc7ee4426e8980879a7ab242e06e2321ffad26e4e8d16730124e93f1b701b0782eefd1a2ff5aa28ce7c7360dc807fbffb383e237d6f896db07b430101a611f6735c5d1c03fc6015a4fb3d2ee549687f5bd5bc1ecd0874ed9b70964db3a82a748d6ad337de9bc3f89953c8775348ac061c3da32b170cd795188f7e6c6513c84c26b2bc4f1c9f5df699b4b821d0ec9a53c390300f4d565e81923e1f4e1d575dac1c159d5f8b5ce97ce0ac9135c5f8660429d1302ae2b8997c103de25b4154ec0fed9bc21a89f9c767a7b42f06e893bc9ad81a244ad9cd712b51e68f4e877242cb665edd29c9b371dd66682d2d776d9b5b0683cc2630a1e8ba0ced6b5c6978ed19f7fb6d76496d9c7473fe4e7061bc5d407d14ab02a61c9bc576221c49e1318c1184ecc972dc12a4732040992e10a7a6b070d4217e23f0bf139632ed6b7619ab5a75a00a74f4eb656a7037e2657c922ae23732454a540a3574abdc080d0110fd06943eb84fb11aa35c3a8cee5bd2259604080b345760f6076b6a95c816e4576a603adcd0444a79301c8fe91020f99147d1730d160cbbab5861c9b31a471d45c06e09b169510b24467124e83748a117c62b5681d64728f6c74ec6a4e75b1d5e970ed90b69255d15d3556a7be327e9222ff2ddf30e7aadd44ea7cfabf063893f362a6600716a525f7793abd44d5cdbee37e8d3da38106e12bbae5a11f54edc9034d4bb463e17503b5f828485302786f181bee3d9376377469778bc1fc46455c56f3b0821176c4fdf6667844974181e6bcab46c4bce4ac8974c02ddb7d36fff3c28b60b93cf64d9156f0473cfde2ed27f5a505410f809f72403a06d194a064e2a98b7df41f3759b65da56dcc9d768777ad45d1124c310bce041186fd0093fcb68519d68950d1473cfb5ee36a12d2db465e8171158e72999780401ff24fa6c88e9d0e1d9b2465df1909af5170ed124507b04ef910b154ed5497f1c17bab51399236fd877f9af4cbf620f6e8a045460486622fc3511626c00e149ddcd9c8b37db875bf39ff9ad573547d0d103593c2f0ce02c4f67472177c103d795b0d27f22d7d79302a860c04eb9ca317ce13370591e78e9adc9da9f22572ccd63dde85807c7f2a8dbec3fd86ca27a0832789e58716e8288c8162ea603c88ea62ad1dbd35e233843d4dc4c465d50554e43e3d29a472ba409a4a06f0f67b35aeca2665264395855a94f1dd3b146361ae693821519652aed5675e478fe4cd723df7ea05b0901f014ea8d284b2a580e3c927976841b62c07934ab5725e12fac0ad9be4dcf196ddd185d91d573c27418ae67a7e584d552f78240d9d8a256160be5c6cdda175a3e24249d5e26898d4bb7bf93a8bd3949273587b6d010f3467e6f7387efacf59a00552984c0e6762b7e108c909836ffd42f9d9f9853608a2d3021e00f4cfe62613eda6cab6b4b77bf415c37e09c83dfb46db849acf2a2b96035fd54e2c786787c52d5ae4136ac971c13a02507d7566f5300957d94b5b56e9b200c76679f5987c81d4471372a62823f4f9b3fad824e77206ba8e25d030c320743b59dbcdd004493195dea92e437289e13c2bbaf0be3e1917c96d3463ce4cb2a76797a75c4c5614f202c3820c7f6fb5d308270415182fc5f68d2c6b9d202a8cb6d41e495434c25b1230bd0371c015872647516bd550c7bf97526226a73e4dedc2afc71f8246f5f835bbf1d46b1c4426778abaab7e699de8544de0a1d2abb3e3f2cf40c208f604ef42a99191429c1aa391d450de0716a3c3b2508c3b99abea75f7fde1abdb722d717069ee24c80ca5b8277453b6fc81eb1962f49459824078fe90dba9507dc68f13f1cdc192d781045a552c0be2006e8d8622c7c719023c00c002e35a539caab59f0357b8ced05831e1f03a14564486ee3256df7335ff6601b5b171b5b446b0bdaa666ceeb8b5beb5da8656f6b3bf98eb663507f343d204618696917fb15d7254b08396101857ca8367d54243a9a33a8aa5963070c14c0e7385219aa0a8c198d7f74458b8aa46fc31f07494a17bb7e4c62ed3e5478d01837485128ae6bd29da963c75cb0dfbf334fc9271705cb09fff4d1660df8cac514af5b0e43397cc0574d6a9f5321e730925c46111d6118ec94c0adcb22fb3b5b20614d520aee026ccb8a7e6564d54921f35f2c4f4d47588a38b75dfb1947e35288c5c0b46e3a3b805eb3dca71e4d77408874273c3114f225f63de5ac70f9acec922f12d66bff902d9aacae002200567ad0627b7220a72074d29bbe30548f106506ef15ef3a5f2b78fbaa28213df348f6e66bdb0d7e3accea0e9d03cf42c28229bd1307121599c0d0720c91352fbf4d20ac37b5164cfe1933dcd51f6262fcba3a27fe642a05a6f480d4537f7434ffe53214db83860b6dddbff9d3363f795e6e7751570d3159241b07423541f97ea5ffddf0ec4e8677352fba21a430316e4af8881af8dd220eb5d8f1c07b43d52be44154d4594f8c0e1800e2d8adf04a0d156672d136ec897dde14c3eca339030e5a8f3d63dc5c1565859702f7fa4a605bdc002a1d49589e2fccd2b26d1379b221fdd3313c2eadea728427b361156e7d6cb36810a20fe5c44e2e6d970aaaa752014923fa2618232d2eea485e8ef400ba5caab9de8476aace170ee36a9b45f41c23d6b1aa3969a38470c51e73a7bcacbd2db43bb46386d6786155e31734b991e8219b7e46bdaa7f0c4ec2b0b66ae1892b44a0974f81a980aa013a498f4cbbb929560795433af37ad7324803a1d6200d7f210f5c94214267781b2dbb080cf1a6f508799f9bb3b90eae1b917e3752dd7fdd2cca6d5b184d4b986ef2a1f1c88d34be5ef166b04056cc2500ae78b2c09ecbf953dedc42834bdcba3b380ac0171de68d3ac269bbbbcfe27c696ca4393902a6f227e013f8b3f3f21d37ea77fd340f3d83405aabf0ef15f43d6de9679080bfdc3c7fbfed9be3da305c5fc1704e8aa8be186b1a65c3213299e414d78acb8c619c7838b37d7422a19f6576f8b04f79bd38e959800364db60a24d260886ba64fbe9c15ee987d62b49f6c97b01b2d67db594a80e8cdbf29afeac67112f4e191be5017a0e110f6fca9e42f075c71624ec873523622fc8d81ff6265f3ce03b0404235169012ee46ca625dd6f31cc686115d05499648e8413e3d7a4e73770acea623deb527453dd405d3782c30cc8f5ac713bb594332a978861c279d676fe353779f20df348462a3d0cecc3d210b8dfe31d088a044618b78dd574b3372607ca5a6cb93cff4502642c10778747116998a9e395b86e78c6829ec480e12c6e0ce8eb49e2c1367cdf9e1f6cb614be708f84c0f2a3e5444f5be1a5379d3bc41d929a1d607390f4579ed3fc0866fe3d4ec42e34fc2039cb275d6312fee400215cd901fe50321ee32078188f76e14db5591ef3736f06c8fc349abbfbf082098c63b29fe268fc8e805a4b148308a9544556e693e2288c6e9c1105c9b67722f29d6e75d3d87ed0e2a95374cd24f244f48b458b5af611d99b2820c30c923abb0883588aeb8382d33cd9373d36b4be4aaacc113e70017de9af48275548be238b1bf16bb63384d087f2e74d7e40b0f0af189418c17f03b5f8f99038cc5427e405033c224448747e2e9c9830584efea8ff57773db3a5e30b1ea764435cb46224e633ac7afc7153985ce9165de8ccf1b807c7c8752415cea0dfcefc63e33021793a744a245f7b5b8f55ef656345bfdcad4953c36a1413b804fdb2a62d8a108472f57068737e32e97cdca834334f94a3e00eb1e637f48b8c4d2d4e21542ad1e6998c27a74b29502f1769468d6adf84539255863c262a4d7d69e31b4634abc2595170313f27ed57085ee1fda03be708d44e5d4b564ff3f390c055c197439763c22ba0dedb103b8480527065f82d54bdb013106b6d08e857bc9c3dff825111b30abb403324072ec48ae1cca8c057ecbd6d981183332b0a46bcb7ddc12d3afa2d9cdc904c92209aa8e64ce18c3c3f689a4f806d15bf7380203a7810241a110e3b1761f31c38612c4cfe699de74a697e04b1bd8e52330f12f0a34f78f4cf423c08a5e35c62cd4c62eeacba142811676aa4f615d6d89f6092d8b1fc87161720e4bf5a5973d23920d2fe1f7cfeee2416df3ce5d3feb96c646944753413c9d378fb3329aa31480c676ad6e7d4f71b5f5c4b65243c0315e02a52f5f02e5d050c642e677e343b851a27484d6828d2986c4d1be717515b688a0fecab02d8c6c53b65377d5a6f62d5de39b6020b495348a745775cb7bbe3a23f680e71b8707dbe9f7deffca0b00d235044f72263a7a2be443553474f237cf6496bc20e9d0fe2914309648e5b57a7f73752f38d4cf9fa19f4344a123c3af13d061bbaf38de33ea0d866df5a0b31199bdc4a815dcf1155b08e561a69c4d05508175e6b89ee657be56f524b19e55ff23de55035f1bb4f0d17716b7f1b372b24f7ef28be533a705388306633dd39c334d19b584e159a634cc75154e87c1c68e36589522bbca29e0374fd42dedee3d02252c950487085c56dad8a7aa58e88d76bc882679a73110e8bc5a43c12dc402aab21766b4d334eac15b03f28481dfa74eb25d615a484c951bf453b0e15c1b3906c5fcf3906f4249f162f7d4a4cc5389134d0af38b35686275825ab08f83f9753fdaebb58ed346ff70036fe2c011304f90caada44ef8522e926581e2aa12d9756c6d14862f7208197bf58c71654b2264421b2fb4d65524182d1a57f6b164457d39fa8662d5b67ef2c2b71046abe0c3ed97e624b52d71a44e6ec35cc6407fa554613b3e5269a8bcc18f37f6b356ac40e2eb4faea08f8509815f4ee800729317d03b742e965933de1c8fef6ff316b0a721f4abb970d98b564537e5a7c013a815795dadc3e7ef7f108255c4f8672f0d068f9e2f54908d3d303be0033266ea3ecb0d0587b151d6f959b9db110dc1b1a0839dc866ed56bdda843176db1861af0e12fe9fa15b63a5b2a1efd3c9c1861364ff60a3db0137a8166f61d89cc6b6d4037e887cefc0867aa316531802651590f5b3bb2a571a054e549c8e06a50587dd4782b2fbd856f522508a4a63d82494779bf1dea0d94b705ca8d0b6082dfc27502fcbc61acb13f51d01c4801987bbb3b7e6c17ee27a9a63a225528343814fc4fd1cf638ea813d44020e9be8dbf8b3c7be7a0832c64cc1453b30373b46951de34ca4062a2f1a7fe6b692832c114e6846918ac4d9891cfeb04bb1041ac8689a972c8f2c27f289a8940a117948cffd567337f0acd169e76c505545ee7e16552e40e2d5b75f956fb6d7eddf30986c5a1fa1aa80d2b9156c0103fb7c82acab3a7da4fcd79a05c9f91227a794b3aab6d3f4009580138582653b86d4a36418ed1a3cb7c32a646b4fe628539d159f65e05445308f8cc8d4e907ed620320da7d6d2b14b1b17b6dd1486f407098401d77fb6e98d7077b57962cfe6f34f839919f3f6a4f31e0eda474f663f8203c583ca8fa657694881365f1c37e94c303c726e1225ebec210eb872dba23d0a3634769d4b1b63a82b30d172bf44d7e72471e87427526ad74f71eb82eee58da6432d28e9c04b00145fe666bd09a1539a362fb2b2754dce7662b11225cf1e45ba5ed5d06ce311d82772032bf346d81e0e1daeb3e268bfe46f04a04b725d26e47e2adfe4218d4082b75676bf88863d42c52fe0bdde959dae610f9f987ca2b57a671e5236d943c064a22c04742180930abd5c86427d6805e98d7145302cd8fe5a0c05596ad8741c09ef439ff56ed7721e836c25e0e38c0300e73c3db40170c735d25e812727293149407cadc5f804a79b1b2653404de18880fd5952153868077f7b2bc7cd589946ac9e6e205fdf3d08e29528d0281d87e8f1d500d63128e3ef288b2c41233dd94381e000dfbb01e85f3a6234ab6098de61f443475ea73ceb7b4580072c4c041a5a441b50f7e156d310135f11945c8e4fc06a8d35668437eabdcb7c673c041c828d7a425ef90a51f2e2ae6507d7d7ccd13495c955d6651607815f7878fe92413d75f85522d69c9ec6f52372492171f21c6bc3f0464273eced69e4e806ac58ab1de790a75d1790ab7b6bbbdb72b1eca8bd17ab512f85acfb9691fc700364797f07f7e62d7ddcfeadd99f5244616fe00e92339562005ac34d839258875deb5aa0f6b89e017fcfe41ef9d0b44171290a619e4d7e2a3feea548bd9d692a4f0cabb75a414920350d06cca8a851353c0365505c7400f251b9f1c9f9d8968c39f29212db0219cf7190f43ffd46793c0c6cfa48eac1a5c61db7689e59c735625acabcfa1cbb460842 diff --git a/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs index 3a84eeaf..f8c9a9b0 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs @@ -76,6 +76,12 @@ namespace Ichni.RhythmGame node = new SplinePoint(position, Vector3.up, normal, size, color); track.trackPathSubmodule.SetPathNode(this); } + public void OnDestroy() + { + track.trackPathSubmodule.pathNodeList.Remove(this); + track.Refresh(); + print("PathNode " + elementName + " destroyed."); + } } public partial class PathNode @@ -98,10 +104,10 @@ namespace Ichni.RhythmGame base.SetUpInspector(); var container = inspector.GenerateContainer("Path Node"); - + var pathNodeSettings = container.GenerateSubcontainer(3); var indexText = inspector.GenerateHintText(this, pathNodeSettings, "Index: " + index); - var isShowingSphereToggle = + var isShowingSphereToggle = inspector.GenerateToggle(this, pathNodeSettings, "Is Showing Sphere", nameof(isShowingSphere)) .AddListenerFunction(() => SetPathNodeSphere(isShowingSphere)); } diff --git a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs index e5380cf5..de805bc4 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using Dreamteck.Splines; using Ichni.Editor; using Ichni.RhythmGame.Beatmap; @@ -25,7 +26,7 @@ namespace Ichni.RhythmGame Track.TrackSamplingType trackSamplingType, bool isClosed, bool isShowingDisplay) : base(track) { this.path = track.AddComponent(); - + this.pathNodeList = new List(); this.trackSpaceType = trackSpaceType; this.trackSamplingType = trackSamplingType; @@ -92,10 +93,6 @@ namespace Ichni.RhythmGame public override void Refresh() { - - - - SetTrackSpaceType((int)trackSpaceType); SetUpSplineComputer(trackSpaceType, trackSamplingType); diff --git a/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs b/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs index 7b2442b8..43a41cf6 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/Trail.cs @@ -116,6 +116,7 @@ namespace Ichni.RhythmGame t.trailRenderer.emitting = emitting; t.trailRenderer.enabled = emitting; if (willClear) t.trailRenderer.Clear(); + } } } diff --git a/Assets/Scripts/Graphical Animation Editor/FlexibleFloatTab.cs b/Assets/Scripts/Graphical Animation Editor/FlexibleFloatTab.cs index beef0be9..c3fb5a05 100644 --- a/Assets/Scripts/Graphical Animation Editor/FlexibleFloatTab.cs +++ b/Assets/Scripts/Graphical Animation Editor/FlexibleFloatTab.cs @@ -51,10 +51,22 @@ public class FlexibleFloatTab : MonoBehaviour // 创建节拍线 private void CreateBeatLines() { - for (int i = 0; i < (int)EditorManager.instance.songInformation.song.length / FatherWindow.timePerBeat; i++) + // 先清空BeatArea下的所有子对象,防止重复生成 + for (int i = BeatArea.childCount - 1; i >= 0; i--) { + Destroy(BeatArea.GetChild(i).gameObject); + } + float maxX = 1400f + (3 * BeatDeviver); + int totalBeats = (int)(EditorManager.instance.songInformation.song.length / FatherWindow.timePerBeat); + for (int i = 0; i < totalBeats; i++) + { + float posX = BeatDeviver * i; + if (posX > maxX) + { + break; + } GameObject u = Instantiate(BeatLine, BeatArea); - u.transform.localPosition = new Vector3(BeatDeviver * i, 0, 0); + u.transform.localPosition = new Vector3(posX, 0, 0); } } @@ -82,7 +94,15 @@ public class FlexibleFloatTab : MonoBehaviour Vector3 newPosition = new Vector3(-FatherWindow.songBeat * BeatDeviver, 0, 0); Area.localPosition = newPosition; BeatArea.localPosition = newPosition; - XBeatArea.localPosition = newPosition; + while (true) + { + BeatArea.localPosition += new Vector3(BeatDeviver, 0, 0); + if (BeatArea.localPosition.x > ((-200f) - BeatDeviver)) + { + break; + } + } + XBeatArea.localPosition = BeatArea.localPosition; } // 添加事件 @@ -141,7 +161,7 @@ public class FlexibleFloatTab : MonoBehaviour public float GetBeat() { // 获取鼠标在 BeatArea 中的相对位置 - Vector2 localMousePosition = BeatArea.InverseTransformPoint(Mouse.current.position.ReadValue()); + Vector2 localMousePosition = Area.InverseTransformPoint(Mouse.current.position.ReadValue()); //Debug.Log(localMousePosition); float mouseBeat = localMousePosition.x / BeatDeviver; diff --git a/Assets/Scripts/Manager/MusicPlayer.cs b/Assets/Scripts/Manager/MusicPlayer.cs index f69dcd47..f61333d0 100644 --- a/Assets/Scripts/Manager/MusicPlayer.cs +++ b/Assets/Scripts/Manager/MusicPlayer.cs @@ -19,7 +19,7 @@ namespace Ichni.Editor EditorManager.instance.songInformation.songTime += Time.deltaTime; return; } - + if (isPlaying) { EditorManager.instance.songInformation.songTime = EditorManager.instance.musicPlayer.audioSource.time; @@ -33,7 +33,7 @@ namespace Ichni.Editor Trail.SetAllTrails(true, false); EditorManager.instance.songInformation.songTime = audioSource.time; if (isPlaying) audioSource.Play(); - else audioSource.Pause(); + else PauseMusic(); } public void PauseMusic() diff --git a/Assets/Scripts/Sample Assiant/SampleWindow.cs b/Assets/Scripts/Sample Assiant/SampleWindow.cs index 027ee89e..456242b6 100644 --- a/Assets/Scripts/Sample Assiant/SampleWindow.cs +++ b/Assets/Scripts/Sample Assiant/SampleWindow.cs @@ -32,7 +32,6 @@ public class SampleWindow : MovableWindow//该window高度为300,横的要在1 public GameObject beatLinePrefabv; public GameObject beatLinePrefabh; public GameObject NotePrefab; - public RectTransform secBeatLineh;//用于定位屏幕位置 float songTime => EditorManager.instance.songInformation.songTime; float songBeat => EditorManager.instance.songInformation.songBeat; float beatmapStartTime => -EditorManager.instance.songInformation.delay; @@ -99,12 +98,7 @@ public class SampleWindow : MovableWindow//该window高度为300,横的要在1 GameObject u = Instantiate(beatLinePrefabh, LineMovepoint); u.transform.localPosition = new Vector3(0, i * beatDeviver, 0); - if (i == 1) - { - secBeatLineh = u.GetComponent(); - realDevider = secBeatLineh.position.y - LineMovepoint.position.y; - Debug.Log(realDevider); - } + if (u.transform.localPosition.y > 600) { Destroy(u); @@ -177,7 +171,7 @@ public class SampleWindow : MovableWindow//该window高度为300,横的要在1 TransformChanged(); windowRect.GetComponent().alpha = track.timeDurationSubmodule.CheckTimeInDuration(songTime) ? 1f : 0.2f; } - if (selectedGameObject == null && RectTransformUtility.RectangleContainsScreenPoint(windowRect, Mouse.current.position.ReadValue())) + if (selectedGameObject is null && RectTransformUtility.RectangleContainsScreenPoint(windowRect, Mouse.current.position.ReadValue())) { DetectNote(); diff --git a/Assets/Sprites/2048x2_noise_image.png b/Assets/Sprites/2048x2_noise_image.png new file mode 100644 index 00000000..2e06e58c Binary files /dev/null and b/Assets/Sprites/2048x2_noise_image.png differ diff --git a/Assets/Sprites/2048x2_noise_image.png.meta b/Assets/Sprites/2048x2_noise_image.png.meta new file mode 100644 index 00000000..b32b9b1d --- /dev/null +++ b/Assets/Sprites/2048x2_noise_image.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 16b26cd405b13ea40a6ec6328af30004 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/256x2_noise_image.png b/Assets/Sprites/256x2_noise_image.png new file mode 100644 index 00000000..6e43c33b Binary files /dev/null and b/Assets/Sprites/256x2_noise_image.png differ diff --git a/Assets/Sprites/256x2_noise_image.png.meta b/Assets/Sprites/256x2_noise_image.png.meta new file mode 100644 index 00000000..d482269b --- /dev/null +++ b/Assets/Sprites/256x2_noise_image.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 5c532667f1147d349a9fbcd7151e6bec +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/2x2048_noise_image.png b/Assets/Sprites/2x2048_noise_image.png new file mode 100644 index 00000000..32eaddff Binary files /dev/null and b/Assets/Sprites/2x2048_noise_image.png differ diff --git a/Assets/Sprites/2x2048_noise_image.png.meta b/Assets/Sprites/2x2048_noise_image.png.meta new file mode 100644 index 00000000..f1b4f053 --- /dev/null +++ b/Assets/Sprites/2x2048_noise_image.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: bfbc02946587c834b9028fbc33c1f778 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/2x256_noise_image.png b/Assets/Sprites/2x256_noise_image.png new file mode 100644 index 00000000..33501f2a Binary files /dev/null and b/Assets/Sprites/2x256_noise_image.png differ diff --git a/Assets/Sprites/2x256_noise_image.png.meta b/Assets/Sprites/2x256_noise_image.png.meta new file mode 100644 index 00000000..6deda758 --- /dev/null +++ b/Assets/Sprites/2x256_noise_image.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: e9afde6e7f083134cbe70e5b2307832f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Document/ichni编辑器指南.md b/Document/ichni编辑器指南.md index e3c68f4c..19c853d4 100644 --- a/Document/ichni编辑器指南.md +++ b/Document/ichni编辑器指南.md @@ -14,9 +14,9 @@ Creator:你的名字/谱师马甲 BPM:节拍,由于ichni是按照秒数存储谱面,而有变bpm的曲子少之又少,所以是固定bpm -            不知道bpm是什么的:[歌曲bpm是什么 - 搜索](https://cn.bing.com/search?q=%e6%ad%8c%e6%9b%b2bpm%e6%98%af%e4%bb%80%e4%b9%88&FORM=QSRE1) - -            bpm测试器:[歌曲调性和BPM查找器 - 多功能音乐分析器](https://vocalremover.org/zh/key-bpm-finder)     +不知道bpm是什么的:[歌曲bpm是什么 - 搜索](https://cn.bing.com/search?q=%e6%ad%8c%e6%9b%b2bpm%e6%98%af%e4%bb%80%e4%b9%88&FORM=QSRE1) + +bpm测试器:[歌曲调性和BPM查找器 - 多功能音乐分析器](https://vocalremover.org/zh/key-bpm-finder) Delay:这里的Delay只是单纯的调整谱面开始的时间,调为负数可以在歌曲开始前开始谱面,如果有偏移(offset)的需求建议剪一下曲子 @@ -111,7 +111,7 @@ camera的职责很简单:做一个camera。带着他或者他所在的folder Track是ichni的核心元件,以下分为几种 -###### 基础:TrackPath +#### 基础:TrackPath TrackPath属性:空间形状,前进方式,是否闭合 @@ -121,46 +121,41 @@ TrackPath属性:空间形状,前进方式,是否闭合 以下是一个示例(代码块仅示意,没有实际意义和语法) new track{ pathnode0(0,0,0) -    pathnode1(0,0,1) -    pathnode2(0,0,10) -    starttime:0 -    endtime:2 + pathnode1(0,0,1) + pathnode2(0,0,10) + starttime:0 + endtime:2 } 若是time模式下,0到1秒的时间track从0到1,而在剩下的1秒会从1直接冲到10 distance就不会 ``` -###### 路径方式 +#### 路径方式 1. Movable 2. Static -###### 显示方式 +#### 显示方式 1. AutoOrient 2. TrackPath -###### movable属性: +#### movable属性: -    开始时间,结束时间,可视长度,缓动 +开始时间,结束时间,可视长度,缓动 +其中开始时间和结束时间是**track的头部**到达首尾的时间,而 结束时间+可视长度 则是**track尾**到达尾部的时间 +在movable中,note以固定的位置生成在track上,在放note时切记判定时间要在track的启停时间之间 -    其中开始时间和结束时间是**track的头部**到达首尾的时间,而 结束时间+可视长度 则是**track尾**到达尾部的时间 +#### Static属性: +下落时间,下落缓动 +Static的track若是有选择显示方式,则会始终显示整条track +在static中,note从track的**尾部运动到头部** -    在movable中,note以固定的位置生成在track上,在放note时切记判定时间要在track的启停时间之间 +#### 显示属性 -###### Static属性: - -    下落时间,下落缓动 - -    Static的track若是有选择显示方式,则会始终显示整条track - -    在static中,note从track的**尾部运动到头部** - -###### 显示属性 - -    无论是AutoOrient还是TrackPath,都拥有一个材质系统,你可以选择主题包中的材质,两个显示方式不同的是,track path会由于其中pathnode的方向而改变面的朝向,而AutoOrient会强制track的面始终面向摄像机(这段建议实操看看效果,各有各的好) +无论是AutoOrient还是TrackPath,都拥有一个材质系统,你可以选择主题包中的材质,两个显示方式不同的是,track path会由于其中pathnode的方向而改变面的朝向,而AutoOrient会强制track的面始终面向摄像机(这段建议实操看看效果,各有各的好) ### pathnode @@ -178,9 +173,9 @@ pathnode带有位置,旋转,缩放,颜色等,用于调整track部分的 另外还有一个特殊的事件用在track下:trackPercentPoint -        trackPercentPoint使用0到1的值代表track进程,配合trail使用可以实现 ~~反复横跳~~ 精细控制 - -        还有一个trackHeadPoint是trackPercentPoint的简化版,虽然不该放在这里但是我真的懒得开一个来讲 +trackPercentPoint使用0到1的值代表track进程,配合trail使用可以实现 ~~反复横跳~~ 精细控制 + +还有一个trackHeadPoint是trackPercentPoint的简化版,虽然不该放在这里但是我真的懒得开一个来讲 建议实操 @@ -194,13 +189,13 @@ trail配有位置,材质,颜色等(仍在开发) ### Note -##### 基础 +#### 基础 note可以视为环境物体,拥有击打时间,击打效果等 击打时间:建议使用采音器=>见采音器指南 -##### 击打效果和判定模式 +#### 击打效果和判定模式 由于不同主题包拥有不同击打效果和判定模式,在add页需要输入字符来创建 @@ -208,7 +203,7 @@ note可以视为环境物体,拥有击打时间,击打效果等 ## 谱面存档 -望文生义,不必多说,以下讲的是一些特别的机制 +望文生义,不必多说 ### 自动保存 @@ -216,8 +211,31 @@ ichni每隔一段时间就会自动保存谱面,如果要回档,需要手动 ### Clip -asd +类似beta的export和import,如果你选中了一个文件夹按s clip,再命个名字,这就相当于保存了一小段谱面。然后在别的地方用l clip读取,好处就是可以跨越多个谱面,起到一个类似预制件的作用。 ### Export -ads +这个属于与本体对接的功能,目的是生成本体用的加密版谱面 + +## 一般写谱流程 + +### 0,寻找音源,确定bpm,选择主题包 + +### 1,创建摄像机轨道 + +我们建议在开始创建谱面的第一个操作就是创建摄像机文件夹,因为摄像机是每个谱面都必须要有的元素。 + +在刚打开工程时,您是通过自由视角摄像机 `Scene Camera` 来预览内容的,但这并不是游戏本体使用的摄像机。想要您的谱面被正确显示在游戏本体上,您需要创建一个游戏摄像机 `Game Camera` 来“拍摄”您的谱面。 + +#### 创建摄像机文件夹 + +您需要创建一个摄像机文件夹来放置摄像机及其附着的轨道(如果有),现有的两个方法便是使用cross track point或者直接对摄像机所在的文件夹增加动画,动画法可以直接参照其他元素的方法来进行创建,而cross track point可以获取到文件夹内对应的track,然后使用类似track precent point的设置来调节,当然Cross track point里设有快捷设置所有的Track,也就是说可以完全不用管cross track point的东西,直接在文件夹下把track和对应的起止时间都写好,然后直接使用paste track list粘贴所有的时间。 + +和beta版不同的是cross track point是会自动设置旋转的,默认的旋转方向对应的是当前track的切线方向(形象的说法就是你用track画一个圆,然后设置之后不用手动操作,你的摄像机就可以自动沿着圆旋转,如果把y值设为了90,它就可以始终看向圆的中心点) + +### 2,创建track + +#### 1, movable track +由于movable track的功能介绍早在前面有提及,这里不过多介绍 + +