From 4708da83181914a209cb6cc44f4e5b609be8177d Mon Sep 17 00:00:00 2001 From: SoulliesOfficial Date: Tue, 15 Jul 2025 05:00:31 -0400 Subject: [PATCH] uv --- Assets/FR2_Cache.asset | 172 ++- .../Resources/ES3/ES3GlobalReferences.asset | 58 +- Assets/Prefabs/BasePrefabsCollection.asset | 2 + .../Elements/Vector2InputField.prefab | 1248 +++++++++++++++++ .../Elements/Vector2InputField.prefab.meta | 7 + .../Simple/DynamicUIVector2InputField.cs | 106 ++ .../Simple/DynamicUIVector2InputField.cs.meta | 11 + .../Simple/DynamicUIVector3InputField.cs | 2 - .../DynamicUI/Inspector/IHaveInspection.cs | 12 + .../EditorGame/GameElements/Track/Track.cs | 12 +- .../TrackSubmodules/TrackRendererSubmodule.cs | 89 +- .../Scripts/Manager/BasePrefabsCollection.cs | 1 + 12 files changed, 1613 insertions(+), 107 deletions(-) create mode 100644 Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab create mode 100644 Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab.meta create mode 100644 Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs create mode 100644 Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs.meta diff --git a/Assets/FR2_Cache.asset b/Assets/FR2_Cache.asset index f0bc23ac..9d8e60d9 100644 --- a/Assets/FR2_Cache.asset +++ b/Assets/FR2_Cache.asset @@ -49,10 +49,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 26252 - m_assetChangeTS: 1752560195 - m_fileInfoReadTS: 1752560195 - m_fileWriteTS: 1752560195 - m_cachefileWriteTS: 1752560195 + m_assetChangeTS: 1752569932 + m_fileInfoReadTS: 1752569934 + m_fileWriteTS: 1752569932 + m_cachefileWriteTS: 1752569932 refreshStamp: 3 UseGUIDsList: - guid: fc6c02e75b66345c29e8a25e2e2bda9c @@ -11523,10 +11523,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3645 - m_assetChangeTS: 1752557937 - m_fileInfoReadTS: 1752558114 - m_fileWriteTS: 1752557936 - m_cachefileWriteTS: 1752557936 + m_assetChangeTS: 1752560200 + m_fileInfoReadTS: 1752560288 + m_fileWriteTS: 1752560200 + m_cachefileWriteTS: 1752560200 refreshStamp: 3 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -14644,15 +14644,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 01fba1b4480fc4988be3f80598f285c1 type: 2 - m_fileInfoHash: 21264.cs + m_fileInfoHash: 23880.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 21264 - m_assetChangeTS: 1752284102 - m_fileInfoReadTS: 1752284125 - m_fileWriteTS: 1752129965 - m_cachefileWriteTS: 1752129965 + m_fileSize: 23880 + m_assetChangeTS: 1752569790 + m_fileInfoReadTS: 1752569798 + m_fileWriteTS: 1752569788 + m_cachefileWriteTS: 1752569788 refreshStamp: 3 UseGUIDsList: [] - guid: 01fb2e405de427a47bbd366ee75d1772 @@ -27361,10 +27361,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3642 - m_assetChangeTS: 1752557937 - m_fileInfoReadTS: 1752558114 - m_fileWriteTS: 1752557936 - m_cachefileWriteTS: 1752557936 + m_assetChangeTS: 1752560200 + m_fileInfoReadTS: 1752560288 + m_fileWriteTS: 1752560200 + m_cachefileWriteTS: 1752560200 refreshStamp: 3 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -48066,15 +48066,15 @@ MonoBehaviour: ids: 5b000000 - guid: 8372da2ad7a105d4aa3904e8b3fdfd71 type: 2 - m_fileInfoHash: 4957.cs + m_fileInfoHash: 4879.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 4957 - m_assetChangeTS: 1752284102 - m_fileInfoReadTS: 1752284124 - m_fileWriteTS: 1745032595 - m_cachefileWriteTS: 1745032595 + m_fileSize: 4879 + m_assetChangeTS: 1752569448 + m_fileInfoReadTS: 1752569456 + m_fileWriteTS: 1752569447 + m_cachefileWriteTS: 1752569447 refreshStamp: 3 UseGUIDsList: [] - guid: 83d267126bcce4c9495361e0502fd04c @@ -84945,15 +84945,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 266f4a39c512c46eea7e44336e4fc600 type: 5 - m_fileInfoHash: 6087.asset + m_fileInfoHash: 6191.asset m_assetbundle: m_addressable: m_atlas: - m_fileSize: 6087 - m_assetChangeTS: 1752138525 - m_fileInfoReadTS: 1752138526 - m_fileWriteTS: 1752138524 - m_cachefileWriteTS: 1752138524 + m_fileSize: 6191 + m_assetChangeTS: 1752569636 + m_fileInfoReadTS: 1752569637 + m_fileWriteTS: 1752569636 + m_cachefileWriteTS: 1752569636 refreshStamp: 3 UseGUIDsList: - guid: 9bfe18cabd8814ad0b27f5969180c1d2 @@ -85018,6 +85018,8 @@ MonoBehaviour: ids: - guid: 94ed5dfb5df8c408faa267d2915aaeeb ids: + - guid: a6abc70beebfa934a9c5ef5b2b8ec115 + ids: - guid: 9e72408c17dfe4740b0e9060d6b3fafa ids: - guid: 4b0098f7176cb49d6ac968b7d3ca4c51 @@ -157806,10 +157808,10 @@ MonoBehaviour: m_addressable: m_atlas: m_fileSize: 3649 - m_assetChangeTS: 1752557937 - m_fileInfoReadTS: 1752558113 - m_fileWriteTS: 1752557936 - m_cachefileWriteTS: 1752557936 + m_assetChangeTS: 1752560200 + m_fileInfoReadTS: 1752560288 + m_fileWriteTS: 1752560200 + m_cachefileWriteTS: 1752560200 refreshStamp: 3 UseGUIDsList: - guid: bf2edee5c58d82540a51f03df9d42094 @@ -159518,15 +159520,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 9bfe18cabd8814ad0b27f5969180c1d2 type: 2 - m_fileInfoHash: 3128.cs + m_fileInfoHash: 3174.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 3128 - m_assetChangeTS: 1752284102 - m_fileInfoReadTS: 1752284123 - m_fileWriteTS: 1752136051 - m_cachefileWriteTS: 1752136051 + m_fileSize: 3174 + m_assetChangeTS: 1752569610 + m_fileInfoReadTS: 1752569618 + m_fileWriteTS: 1752569586 + m_cachefileWriteTS: 1752569586 refreshStamp: 3 UseGUIDsList: [] - guid: 9b3f77b5965944b8ba5c1beefa1eb533 @@ -185453,15 +185455,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 8d2b6af5deaa046ff89ed3c74bb2ffdc type: 2 - m_fileInfoHash: 20098.cs + m_fileInfoHash: 20309.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 20098 - m_assetChangeTS: 1752284102 - m_fileInfoReadTS: 1752284122 - m_fileWriteTS: 1752048862 - m_cachefileWriteTS: 1752048862 + m_fileSize: 20309 + m_assetChangeTS: 1752569176 + m_fileInfoReadTS: 1752569222 + m_fileWriteTS: 1752569172 + m_cachefileWriteTS: 1752569172 refreshStamp: 3 UseGUIDsList: [] - guid: 8d4bc6bfa28760b29f13174d6b6ea710 @@ -193530,15 +193532,15 @@ MonoBehaviour: ids: 73000000 - guid: 2e498d1c8094910479dc3e1b768306a4 type: 5 - m_fileInfoHash: 9628.asset + m_fileInfoHash: 566686.asset m_assetbundle: m_addressable: m_atlas: - m_fileSize: 9628 - m_assetChangeTS: 1752557937 - m_fileInfoReadTS: 1752558113 - m_fileWriteTS: 1752557936 - m_cachefileWriteTS: 1752557936 + m_fileSize: 566686 + m_assetChangeTS: 1752560990 + m_fileInfoReadTS: 1752560991 + m_fileWriteTS: 1752560990 + m_cachefileWriteTS: 1752560990 refreshStamp: 3 UseGUIDsList: - guid: fe393ace9b354375a9cb14cdbbc28be4 @@ -205666,15 +205668,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 1f09909b044c24c8cbd5c5375403bce9 type: 2 - m_fileInfoHash: 11887.cs + m_fileInfoHash: 12606.cs m_assetbundle: m_addressable: m_atlas: - m_fileSize: 11887 - m_assetChangeTS: 1752284102 - m_fileInfoReadTS: 1752284122 - m_fileWriteTS: 1752136050 - m_cachefileWriteTS: 1752136050 + m_fileSize: 12606 + m_assetChangeTS: 1752569610 + m_fileInfoReadTS: 1752569618 + m_fileWriteTS: 1752569602 + m_cachefileWriteTS: 1752569602 refreshStamp: 3 UseGUIDsList: [] - guid: 1f39d038dce44a7428bbe3628ec512d0 @@ -219451,15 +219453,15 @@ MonoBehaviour: UseGUIDsList: [] - guid: 7c10da0d74d78364bac94506d77290bf type: 5 - m_fileInfoHash: 2814.mat + m_fileInfoHash: 2835.mat m_assetbundle: m_addressable: m_atlas: - m_fileSize: 2814 - m_assetChangeTS: 1752557937 - m_fileInfoReadTS: 1752558113 - m_fileWriteTS: 1752557936 - m_cachefileWriteTS: 1752557936 + m_fileSize: 2835 + m_assetChangeTS: 1752569932 + m_fileInfoReadTS: 1752569934 + m_fileWriteTS: 1752569932 + m_cachefileWriteTS: 1752569932 refreshStamp: 3 UseGUIDsList: - guid: 06e8da9b2b26f09459e8a93e84b2e0c9 @@ -221181,6 +221183,48 @@ MonoBehaviour: ids: 1c000000 - guid: d0353a89b1f911e48b9e16bdc9f2e058 ids: 73000000 + - guid: b0fa96ed23c470e439b349bc8e29ae6d + type: 2 + m_fileInfoHash: 4005.cs + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 4005 + m_assetChangeTS: 1752569448 + m_fileInfoReadTS: 1752569456 + m_fileWriteTS: 1752569445 + m_cachefileWriteTS: 1752569445 + refreshStamp: 3 + UseGUIDsList: [] + - guid: a6abc70beebfa934a9c5ef5b2b8ec115 + type: 5 + m_fileInfoHash: 36772.prefab + m_assetbundle: + m_addressable: + m_atlas: + m_fileSize: 36772 + m_assetChangeTS: 1752569527 + m_fileInfoReadTS: 1752569528 + m_fileWriteTS: 1752569527 + m_cachefileWriteTS: 1752569527 + refreshStamp: 3 + UseGUIDsList: + - guid: fe87c0e1cc204ed48ad3b37840f39efc + ids: 73000000 + - guid: 0000000000000000f000000000000000 + ids: 00000000 + - guid: 2da0c512f12947e489f739169773d7ca + ids: 73000000 + - guid: 8f586378b4e144a9851e7b34d9b748ee + ids: 7200000015000000 + - guid: f4688fdb7df04437aeb418b961361dc5 + ids: 73000000 + - guid: 306cc8c2b49d7114eaa3623786fc2126 + ids: 73000000 + - guid: 3312d7739989d2b4e91e6319e9a96d76 + ids: 73000000 + - guid: b0fa96ed23c470e439b349bc8e29ae6d + ids: 73000000 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 9b91d8d7..386f24f2 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset @@ -2693,7 +2693,6 @@ MonoBehaviour: - {fileID: 5988426910569796711, guid: 85c3e9578b45a414bb6507f90e48720a, type: 3} - {fileID: 4800000, guid: d54759aa63d2527499f0c933fdf37b78, type: 3} - {fileID: 2100000, guid: 720c743be19718447a881adf4e2707ca, type: 2} - - {fileID: 7482667652216324306, guid: f5775a9d8f75ec744939ba3702a7fe05, type: 3} - {fileID: 2899945975172320258, guid: 85c3e9578b45a414bb6507f90e48720a, type: 3} - {fileID: 2100000, guid: 40caca121c246564eaba4b6de7329e20, type: 2} - {fileID: 2800000, guid: f5775a9d8f75ec744939ba3702a7fe05, type: 3} @@ -3201,21 +3200,50 @@ MonoBehaviour: - {fileID: 11460786, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - {fileID: 142160, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3} - {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - - {fileID: 2800000, guid: ee148e281f3c41c5b4ff5f8a5afe5a6c, type: 3} - {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - {fileID: 2800000, guid: f7876974a1b60ed4ca3dfd37f229386f, type: 3} - {fileID: 21300000, guid: f7876974a1b60ed4ca3dfd37f229386f, type: 3} - - {fileID: 2800000, guid: 188dfe7e559f13248ba2c41eb5a59328, type: 3} - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} - - {fileID: 2800000, guid: f66c4aa44c09b6a42a2b5b9f9334d824, type: 3} - - {fileID: 2800000, guid: a7ec9e7ad8b847b7ae4510af83c5d868, type: 3} - - {fileID: 2800000, guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f, type: 3} - - {fileID: 2800000, guid: 2fd6421f253b4ef1a19526541f9ffc0c, type: 3} - - {fileID: 2800000, guid: c78150f2237d29247b0f01c770f06979, type: 3} - - {fileID: 2800000, guid: b0f85f7da5042c0448a526d5ecacbfa9, type: 3} - - {fileID: 2800000, guid: f87b5805002ec9649bcb1b96d8a16ba9, type: 3} - - {fileID: 2800000, guid: 02f78a9ec76d40f49bfac78c64a754d1, type: 3} - - {fileID: 2800000, guid: 3028dc075ba8c584d9bc7d1e0255e038, type: 3} - - {fileID: 2800000, guid: dcc0ed9263c0d524aabeb5f4bd75ecee, type: 3} - - {fileID: 2800000, guid: 93f09189124b21e479fc891dbc1b93bf, type: 3} - _Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7648ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096d897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743e0f8591ae3c7fa2d3130b993d419467c3a1a11a336459a24f05e953a20def4426fb65fc8a58b1358f90d04e060c5c571d2b1d2df9baa98256d81d67ace3ff30fdb03fd7487f0de3b24b60f810b51bf247fb2b1b92bc13b5741d788d13165e2476a8c158cb8c388005461687b65a3ff1b24340358a005f80142ff99728e376301c37373b1d6f9dd45d64ff173d548421cd7a3aefd628aa7636cec3148a304701d0398480ecfb2ba1d13492eeff76bd706bc7d4932e661634ee528ba16386a5d2e222b8a926faf1324ea91eb185bb86b273cc874da44c2c8630469d658085c1a5814ff32331eba696b6f91e488b384552cbd92da6ff683e95e632696d9866c2d4553bcd3a41560b90932df6bb3de40b07741fcea64c975b168176f69bbafbd0e02659edc6f57fa421c4de43d1617368022761e988981c87c3693c4457b358b4774d2694e3f634120464531e71ac865af2011b8ba6fdb7a7f63dd5a236d4b39183f9dc945aee841be3402ad314c4f68000774658ced46b6504c174de2429b726e0c19a8b791aa5d085276ef6d2e49321474591be0b0c606851a79f9c5352400cf703e2433a7b16f5c2e6edf6435237e961b396ee87f91be4612239c0aa4233e7677e7a55dcb88d4107f070a9e49d5b59b7e9c41c82751f6647d3f927f2a9e42277d89e9df153fdca55f4b6bcfff42469d23fcd8dc3077c189625a00baf3af2a9114c7d35516e91e8c796f198b64faa45a7d76e4cc1385ae6d5597fece2223c2790767e24fa936e0676b0de32eca03e1ca4ab765c42d4645930bf57524eacefd8d1cb65bedc01984f90d2e25547c193f025f28bed33a98ca8b20b0bb6153fbaec60fabeeeb580bf6ce3aa12e00df0fe90e34887cee722e374a7fe70e0f5e22a61123ec64d22b53a95330f098dcc6cb6a2f3853d2248762c7c172a46c3f1a052d5d041cddcb73bb398821d6427d6aa47b4c51c2b84e0a356679245da0771895c7d53dc4281c57ca5c0c735c465ea5452b171e5977a3a788b62300769e73c717ea69523e1b1b6350b4123f2055d2455efa01667d0c20667fd04e4026c79132d15cd5220a5d361bd5a8be626b68deac856f7d7aba654bc01482cc6abd9562f4c608cd307a0b62c6c47d5753ecf0758b0a83ed7892cc0db4277b417c3d600f10f3774c4f67e5b9f6dff95a6fc92d2f12633149407d249c0605e7f6013519fcda7298b975a4262324caf69875d8821306b3d1e76f8474ed588871c418a6f4bc4de93852016a5c947150da992f0af17fc19603432768e6fe4375176058af2698f75295c034652546000a1f4747974a8bb1e79e1c627676cb950ee7484a337fe927519074615183074115cf5849624826405ceebf10f6c992369faabc7e24043374cae00a27bfed026ba65e77591e81f6560d89a621c206ce7802c23e58cb6ff915a9200f3607a97e250268104af8cb12e08f8380331778b4c0616e04788e4ef72839780d3480bc0fc008227d6a65b0a365dbc8b97fbddd5f4c93403c39f51e66c109c4892bcf8152ebb588515211c625b9c6e3456d1a197deffccd1c6aef77703b386d535e2778955975cec93474f3a3a69a0aff279d2c24dcbe87d7629dbcd92df98c8a5d8c391ec187611c171c4d84f6d6892f1b78499e0b49769f5050f8bcb8f59c3b0081ffcd2cd63e5102b6c306f3f331c7138dbda4432b96a60327908e715a9bdd7fb3d55a4a23ebc6694c1035d377e76274982a9943f3b4ea029432abf72c06a56ff67adc3add40ff1fd9bffc15f34ce503fb429a233be4797cb7f8e7ec20f59c7b038682fb81b64821a93bb1f1b121fc00fc74dfabe9e87372b8371d764605691d4f67d2a4838200775412b3a95892615a31dd92360e99d12705167caa00d52c1c785e963ca485fc797467fffb9c1ccb4a6887ba978dcdf14a6b5556660054877ee69621b7289dfe541fe63d59662974211d38bc87e56a7045b01f5905239d8536ef7de1333d8373368a6678a68f98e440e2358438110e634ff899f8f7bb07cf7e610748e30ba75e653b7aefb41de92a173c1924ed194c2501e1313aa48b7c7b6f36f745884f003439d81efe961fae321d3defcd2ad44368141db93ac31efc0e49f65f7e25a4a1c83ae5ea16fa4e8ee2706357e17b49a6430d70ce59f6c407a72cd3b85f40cff28765289346e92c6dc5539cab5fc61b92ff645c736a8c044100146dbd31f911dcbf7130845c2313d2c62294ad5a19a7e0104048041ba377059e69945a57e99fbf6540ebeef69fef22772ec67307a819189372540ebee9079c172a1a0c704785237d53ee65d146158eae6a7d4ade03fdf64f7ac7e49590007b3878052084e2b230a9170ea4444cb9b2a23a9fab924341ecd310a414f29647f2ac72d3a6b4c9ed6ee253f5f512a23b9c34787830d053f18345194c7386c622405e0151b77812fdd94d3038c0c7c80189b4071f86f0883dff9c509f64838617e3cf345414f4f2144676601e60754eb4f1e529278da79b4fd5c451e5d74e9da32cb7530f6c8a126a3e0d65fd51a59e75ea04528059aea48b6b832927baf2c20826420eaa225d217cf894167f419dfd2f26dc30235ee2b682ed387a104b144fb4b4a2280e9747974826cf783a68db33f77ea601dec29eaa438c8c69a528edcf1cbb9e341c39116721bb17028e6a7b1912058372f3162e76534c6c7d0addf11f38005b7e3659b0cf70f1dd66275ee426ef8da85fa57bc233e9148730ce9371feac373a71f203b09449ad1d0139c750f468458e687bae8543c2d76a4a1e1efe237f214611db8cca1323ecea5299c36cb1657c9877060884feb1f7af199965b368ab4080590f61d0f410a18b669ad8dd85441cb05d7b79d7775abb3d2cc51b547760ad0125bd394038b37277637e1e65d81a29d57bb555ed316909ff52db5cd00bb2ebfa14d7b7c90adc78aa07fd8b05c3a99bed65b9273df44030434d3bed1310428315681979016260ca9f3c5419d00bf03c03409195ae7551fa2c07fc16d0ee6499c57f5f9123dc62af3a7b39865fd9a0c7a377f2547fadd4a0171e4efa6749fab1d811df4f6a8260e0a21f5b323cca9a5267338ca603efe5e8554186fa7098b70f7f7851b14710ceda282e0960ad5e9cb37c059434d6a1b4c8f70907d7049a90f5986ab3b41c4c9a77014e822b197ac4085a2c7e6b2bece5212d1958afe95a213c410107e8efae3037601ccd77e0765183bb028328e704de7baf2ce236f4eb8da62c44ea1874dc19abfc4acb481e6e41b6c825951321b5dbb9207d68e33206bd8a7174a4246069f7981b2f253139965c41eb6700e57f5e371ddf5cc70eba0321fdf8402a5536e3a9a0d202f8f190aa808921260834fa28f4ecc3794503a1e9dd180e27c8073f4e8830ee5eb88266458d34db3e146bf4aa07dfca3c92bc29ad42bce020e3687188c96faf28b9631e88acf6f9112763fd490db82f18c2fc4334f9bfe37562866224c353757de4e29c9402ad16774ac42a5a46d6d22ac7a63a33d484d0058156dada6c2bb12bee7f642b1c9a1515548555a09289d5567f6670acb1a07c0fb7af86a800352f05682ef0036235b014a51364d4b9c83f4b516d637538dfcc3559d2d58258cc364e2a2d7091671815010c5b5532adffce39eee7619aafa26240bdd376fc7703a047559607a2aeceac1575cb45c59e348916d9ae918c3876c7446b8937f7af3d3e40e0e2eebf7ac52373abe886d1704f7c156d76ced7937e3a5457086b1b6486be30a89d1935a9800a5ee2bc117d197963514862d417cd8c623ec8e0f5398c46a127b8059e1a0c98e207b2ff12b8530d6e6fe1b0ba06916321547a085fc7ee48312f02121473a7a58404a63777da04e23b54e4498eadeffc30568e9a325b6c365e677f8b08a37795fb311c51bf5f7f4b7b68cd0ae3a5b9843f00426ae50c7229972496df5b78da97dd4db1a336bf4370294371709ef9dee984323cef5a02fb125775516b19eb69960970e1d8726b24bdb72a40c6b190f96c0c6eb8b1c1a1e8a05b2168c518bf6c6504014be468876e084a6ece7fd4a1f3d8cf7da5906e217182b41d7afa669fa5197a253f50bbebfb7b005067536f6875fc15406b699b022bda8c32998501696eea134c06af63a21ce48129911e88c4f11d927610a6353b7e78f9633b767b7e8396417d3f226d2460b75d79e971710d52c74049187779151f4ecb72b700de935f00ad269ffafbec75482838fb51acf3f913ee02493b99f4e3d4a20e886b48bb3fc43a1b8297bcdb128f507f7f5ab089c4027f0b0821e9cbc1389d7961f1aaf2dfcb8a2a59d158018ae0610cb914f8c7782bcf7bec3cb41dda6e5a4435353c033a435f4c30791c6aa47e69177d097a2ace9a0d73c22507a2166d4f372b9dcb54a45dd276d8373b9fb5fe9c62c9543e07b314731f48fa36ba26cfe245c045e41107ca981963eb5ce6fead6f345f71a97e1769793bd8c0d908d8aab2347f410a17505f561a68ec8752e9ba4a648b02189878605c2983ce75687b537f4e0d5ba865ed51484999052b16d6d85a3ae99cc70d3d150063cfcffc352a1255133c93327c15a4ab176134fd6f346e4d5b29b052171b8d8b215d0c34bd4d7e737850e8ad95f429b07148df6e72126f973d1d575edb646d2f51f8efdff79011361d3f7be0b43f479900ff1f9f050401cb340349dbd81c64e457023866f854a08c6fa474380b0e9577237d0da8d4487f826b887bdb2d00b5b12949946eea57a98439f0361a8befe9923f0f1b505044404d31d568fd420472947f36af28367a57da3eed0ddf789176861572e880cb2e4b97240a854042255abd325d1b7241021c8e0990b83029c808363e27c389a26af07f40c9362f353f24d86ebca7d4189651d540975eaaa76665025d96bc3db6ae910e707a2c317f4b3639045c8758b5ded75301a73466fc02432f1d9cd0fd089e2b4624e48b844cbb9c893198af02edbeb73c6d103e0f7a2a116e425d4fe37b3930652fbecb2eacacf8b94343679cacbebda052f294e622c43fb00afbc6f06cb80ef83615322ff2888fc11785ccbc92ae1b0061516f9231e8770b7efa1e7c2019f7164702685f353d906a67992f2790a7f76e204a998c6b3e5b584a559e3dfd2eaf6e349c372b7b90f9c97f69ecc984b1460b0e8d9c69b28381855dc1aa8adcce679517c2f2f56fcbf39050d10d025191d4990d942f8bca1921b81d4276c3c57c5ab12f83e0c2be519b427ed4467c6f7b28106a43986ffdf360305f3bd8b242b755cc2bc59a17788a937461012fbd34a1c6684775575b1390fc6016aba0d8ca54cf5d5c194c899a5b2eed66047a5b4d0f266c4ca0a898b0b15eeb3efb2dcde9baaa0d308e1a1b543cceec456af40f15a013072e0d256afd670e0e459fb46a760328de5278743f0bf5e8f02e43adb943b12a620e34fcdc953f10c864d79e0b0fc79cb66d2c9d71eaadeddc2463d9d79c9821b674241b9113f6fa3c34137b9e0510436706378a108e40b3543671d1650d1027342971c73200635ded0c04786c8896005f15cae8d31d80dd9a785a3577fa8054df067516063b9610f12913e4b0b60d4a5d59a32567c6208da217adf8fd4e23970c5758721480f9247f252702d09a72ae7a5b6d2ea8a413e71901ba1e8f9e12a2057ad9585f9b36dd5f37a48ded225d3d8a027fa1e2f5ee67446fa7ed38246a1fec7c03aa3de5b020da70e69351fed9263758939cbbd336aa4f12a9204c823e1e3132106c4cc49bd1b81a642a48b475eae10cab25af00da3d397ddc99d6e8307e2404c4830e4673fbf36554d53661f2038842d184ea0955ef0b54d2c10299a1ea222350f3cc34352aa7361321a6060b6c31244ad9508b50884a1a2227275dd6c6306d71420e46e12ad25e233028659d4936425bbf39e7f768e958338ba09d12682103680c717c94c3404bd402521a9cb64a318b3be551a17685136271f4869dcdac74aed4036e2845521d018513f416cfbb7b426f284e4d73a40d79a222f94838160557dd6cc7b2db092e8e0252278a7a296db678452da55d2739d0090979dca72a38700e9e3862f4c965990623af3933680c336fbb300d179f07b73297bce4820b18d81a96981962d03eb0dfc7ab81d67363a1fd456debfa2a79525a7dd0a3f37f1cefc328e0622f0c2e9f7ce0edde4a8820c0345ee2c8790422ef1d45bfe4009b5c5fe3bdbdae93012e0974ce6e1a3d9a072fa27028ad9e1a74c006cf7f75cb13601f7cb33df7ba312b332feb3d47733c4e833ded8770c30a3fc948fda7c481b92a79d072690e2800737245f57eb2dd2d4c357efd4c47642e1e780c8b504376984e77c1c57600d33f543d61f9b6b888f214e54e22bc81f98e22016e1ee54caf481721bcf80ee748b40842aef11a9488990fe789940bac23327050e7776ff124a171e81e6b036f1cd26366e601d015574876082dcbd54354c4451297a13040dc051cf280cd89e3695f3549ce5a39dd9da508a000771ff076b43b1d4e0d27855ddc76e1e5c39525d25a61cd958c74f98b6751c3556ec09a19d369ccf6936ba3c85013f2e319c3613a2d33a715ed850229356de7bc6430ef1cdc06ba2dca2e3feebe6a1b607dea8e5b1077283a66b006596c5ec225525f2c80022907137c8e045b7348a87d945d53b520423424f84b4ad4001266d692e564a1c2655e53f2a1d89e7c3339e1f8763bf0f47646952b0887b7df23138f272dc88de307ba2fbaa6a7c21b6a573aec9623762857cb092bf9cccbed5a8b314a983956033ac6ff306aab9b1e08b19660c2a37547639a2f9e409d15c51042601b767782300136b25b23a79302672833aa632baffd0178ad3169f444d7503b20ac0bb6948033c862f855d16b0a2c330568d1c0283c6c9ee60236af38f20e26f4a238bff1e1434d22d57258ac2d1c48a163065256ef111cc0912f6db67c7170ea30dcc8d26c41dbda7a62ac36eb0f461911f22a1343300690547f8211b1029f46026d7c5053743521e12cd151be19d582e854a589477c2f60d7387eecbe137582ff0cc7a773686c85264cf570014cd33a5405fa05a7288e7e3e1b791af6479d3148b1ad4ead7cf651e71f63fb86616323664397b9196fdcd67e486858ef788491503bd7af6120182e04b412397477fa6046aa4b4c50564ab78d84ccf6e54e4060a2f44bc2384dc3465bc6becd8114b40abd3760663b2f1e587970c31a132149b673b1967f2b3727f96c91a8161518c85e303dc75212252472d6f349c88922a682f08bbfcc5434df851066faaa8707bd9ec7deb5ae1764c8988d24a937ee5e6f49eb262689586c4d9be2b39d86e07aebceb0e79068d85467ab3dd9c0d07458694e094f419f1f4608cbd4af6e35fe42b81339da8706ce0771968dd2c7322d1df1c5e41470d04475eef6dfc49429e663ab8092d3094edf6e1e10c0d82cf10e2a624960cce6ed4d7657aeec90260a7248b0297c48c500265ee675f65f106b4820050925dd89b24942331c2bb73b709528840888566e56ef6270bfe670f6ed663c09f374e31a6a410120c5851ed32166741f3123f81d0d4d5b0778b2b76645c645b6eeaf47fbb10d18c88736a8d1d08e4e59729027105e5a15be2f235d47756425004069e5721e792ec2c4405bbc09d335eb645ef4b59e34569599062bd46b5f3dec5ca99167a8dc3afa61664c1efe5937fea7b7542ba624600c1251d8174d595565036f606041ce4277db04acc717c76a40cf2e2db30b1145c8b779aba9fcdd54f7ef18e471062944da75cc07abd12822dbbb99471e2ba1580ed5d7e84486147b024f4a27001c0746f973543e3f0a9966df9c8565962473226f8e2963d0beff5f75b8f9a479fedd414bacb054299ce61891c2f758fe501a25c36db871f2a3753974f4b3f8033edf1f41bce6168ce1060b7642d30dc7a760392de0981849b0cb11de1538e1af21e3521c27e8bd96fb661e9853034f2f988d346b8634dc5a382a70f2d53976a8245b545f812aef8f1ecf2847b6b09cb41a4075a36c4d3555c0ac1b03875194cb22394352a7514e3d823c75555c2311e9c624296b3c2bc429da0061d50eed07cc3b5c237e6d4a0cc9f2381fcf27744e1b42fa37ad7b00074efd6c2ba9b37a2e9534a86eb8478e571131f35d8bb40afe994db9160a245b513b55d47ffee19bea88f57504d0e295d4b3a226226f5d7d9af36e925a069cdb8e26a8cc0ee4f1a7d06af72a7fd5f131831c713553b5821c2228c5736c73f6e3eb1ae7dd27ea78475ab509737734fd70e49f15766b6787d9a48ba9e55666144360da159911edf6926b476ff6400a6baad9c9a8f4766d4f84930e399b6c5f9df5a1c6129c1d645ff8a8820b23287d19aef754bf1f4221ccce2a9a2d1f256d00f25685aa8508317389954fb40c788d53ea0b755be71dbe3881f94472833640d21683fe7aae2d94a5c6e1358af22bd9469d474214b03618efeb42d380b25c0a3f2bdd35708812a5bd9f1a22c853482cac20fdd53cf42add2093f17194a615a9dd158b492f9f68bf8aa2857496144e635ce8d89f4b78324b00ba55037a84389b4a8ebb4c370104f247c0b56690497334e28e15abcd750b5747404974496443f996de40db30652b5ae4e6578bc3cc244b2e8ae50899e431d5821193784b793bac03bbcfb1099804849d453819e27f1a1464fe46be7e3b6d7a106a581ed1b30f96545478f7038d54c78f626b54ab1848022ba7dc49c0fa2bc2d7aa5e61c01a555154a3c48d07220f29557fd0e330e626d74daa0cd5283a554f80b620582ef2058bf2e500f7ab450a4eb6b3f44029470ebfd18814160d7f27e5b28af2affd4958478544f04ae62e7d93b45a8cdb2e9678c9c56187a6deef66720d1b4520535b506d5aacbbe457c45bfffa7e9e4c0cb4144803ba745fd0fe2674ab7e3ccae95d1911abf936db515d1f7642785fa3714c65a7f903e266190e625c864639d8879016649a5007f914106661d9fe1c579f83035f18e3c4ec3f80099d9793619796f711b262c23dc2545f6eea9c4340182aba430242d9bfa3cc295c1c596b6281aecf08d10f69f5dd45400a478a52767c3fde71dd4f64da70b7b419c79aa7e3403e0f3ace3b112894af204202cf062e1e9fd9247cf985314af497773c7c448813dcb4087b18a8402db6dd2d3021dc3fbee338668c3497b847220f26a49aec176b982f21830ea9374719523b1c5802281758b857bb21ebb88c92b062d730636c363a3d690d443c32729051721fa32b60dbc8c14be295d38d84e7ad0ea2b9a0e9491afa556a94caa36a14352b308629d041eec15f0e51b134f235120b562a34906d9b490a3500a2024222324df840dbf768c663605a2a4ee0bff7046bbddad894dcad32579cbb69f3d8154d311886247116b3641d8d95e997e92aca2c050d4567499e715a74325cac5c6f884376bb0646c49a6d3979690619a54b8479ec361bb7efef86031d2d74062410477b71c40e7168d5690ea19626c576a2e9285d8ca41ba535f9654209299625671569df757595a6091d15ce0d1659c9c08c40169da8976b2cd659bf74b472feff3407547018fed3ac7d67aabae8b24c532e036a9680774082020bb43028ceab54e83226f052c62674eb6ae1be124ebbdbf211a4b708687fbcc62972234aa384afbc56d1b58b5c0168dd2182ea97826fb34f6fddc68e9da3ae4d1cb77b54022a48e6707b682071674e120b6bd6196bdbbb46258d4580b5c2a6067f03a8a48514daf6352ff7f8f86d21f772b4820879c7b9f703342e8f70c99b332b63a07410f398206fdfe43ce3c24db8513ef3013f9e8cb7436057ae19b479946c3c32a4f16af79a1b639859abf5dac619753dadbc9c72ca2916cf4f6416f944598857e10a0d554445a71922faccf4b17b6e6a700ed8aff751fece083947fe315cdeb2249df8bb0b3481f3158350cf5d22e22c095476c97f374f330d3f4d0afe5a4b7ed87e184f742976a48ce59a7401332c2b571af4dce51433ec4ec5adcce7740f90c82e0821f5305fcc35e4a99b2e3dcabfebde4d1c992864ecb1049d39d74274fe0cd5c3cfc409cad9853fee3542321b8c8f6db7c5c12ad60f6c0b2c0531250b0da75758fbfe6583f41474965a3a2fa97e1f2ac844f9513de1abd33ccf363b589fb6042266751f72d60f5326c93f7b2bc29e5119f9a24ff807e589b0d4d6532a4fcc36103e52100cc1480dca5ad5062127a97a31e4215efe66fd2a4bfecf610144d72902f79568eb51b9a74f6a7b52dcebaad77d51840f8fd4cc88c383a40df3e60c8683ac0329934065829ec9ae67e3500637a8a6df51361965d1d5f35a6f0b3966c988fe2a77efd369beb707ad3a2665a6737d6c644bf8454263ee2a017a642a889b9d1a211bd970d883ef62f62f6c2af73a99ceec62d51ac2ce408d663a2e10a67380ed624087c14dee45e73b69b2ec093bcd391e693e256fb8ddef5c66d713b000086ab05a8c38c05a1bdaa71220a6e3ac7cd5920bf33cb1a65d1a1d761fb4c558973b721c629c37fa06867a637e5d97360cb0ea01805b0dbae3a84859563679cfa000aa5be800b6206267fa7848eadb444dab7d31603826c3d148c70be490a3cf0daac37d4dc3e2f398f49b17619403cd848ca65548b890982619752fc8c204f30bc98661265d91118e71ca55d43e24654b958f71c907e93ac4a35c33b24cd4291057f369f25e0b1ee2471c4783e66c643ddb7a5c53752b04e04b9d35b9c45f419da0457cb6448c13758e710f2431b8dd36f7f571c7317b8682f7493d04bf9be117255523d3165107b098193c051be0af93bffe4eb9d17a6c25bff9527135f0490c700802246a4eb2b703dd2ee8c1756227072e443eb36416603eb714e4016a855730cf7524e3d3fe0db10649f34b54e6345b7a799ccbf5a7f40e5d19b33996b96e638548f2ff3e433330360f4651dceb162f1f3f7ce4ea8b3b28801486bab14747bfb8703bf428cb6541526b96e561a33271031d59d534524d11833780d5418681103779996cb1210753d939927ff555c6dde213b894a01df40bbe4b87a0b3c47c2613591ddb0ac5c0e11653af6ee4cd07d9fd5eb8553e15b0546d7251995657f86149486db0c7142ce3ac2a7f4dcc62ef8b52525eabf3d817015771b783e8a6c792b44edc649fa9ed16cd2b58ec6c01de2f9e22eca8b5a35422606ef9c7a25705f99d10021b878aeba96446dec7812b95559318220bb91edc10fa02c50eb1267376265d505b00c3a814376a0dfb811ca38c045d358a7910b3bbed111689c6dcf73ed3675edc23c6ab309036bedbef1e7121a150ecf10e1603ea556c911152e0b1a58c4c3217413897c14d64e54fad2733315f0c188a3717b31595737a48cb6622507b62693ced5adf69b9523e7231b33c2d385f4fb937d8918a6647534a40b00918bd3636ef6f90e046147e4389d840e4e136597ed4e897e75d2f222a5951d55695a4264c0416d36237bf085a46e3e49d58d47213e7323430264f6d2092ba3998ead4521b4d731607f644496c0fc35f85b57a2e7b203d919c900972ab7b4b2f837a8f441b35ffebccea7a09d5845fc016510c69e873418853bc4a75bbfe3d7cbd8b3219a0077abbb566fa659c47bd1830495b0288b5470f3907f05e1576d0325302b45f4986dff129ae4b4e6ea6239a7a62a6055a40f4084422e059072759c06a38ed66935d61b7284d2c2697075e6d1caa1c76e32a726c09435b26a585e902558be4364743d2283ca1d25793e461b37eb28a4e43cfdd40c5815d29b9875dae372f7c21ed9426d8d7f33a7afccafeeea40ea5581038bf86ada47038a1fc6fb44424206397c03915744e89360a5843fa826f8538d24a419011fd316efaa1c7247b7ac920159da91c2a6f1b3d527783ab9e894a1082a7868e65b175657135e52d799a45708e220e1f19a262429a811e777e23f27b152759dcfea77963d7bb540b75113b49331339c1986a29240bc9f5e492fee64cbc95e6aebe978e369c72485d4d57cc554297bb9516cf1d56ff35d135b295d02aa2a14edf2a8d8a36a3705d0ab2877161974a272ab97b63127890acf469c4e932be8d4453f713d54af47bc879d3d7f7773c906097915a8f1efc9e98661e693267a670b3dbbde1957c8b23c8c14c16c05078dc47269cae5f18e29da7a78591d376b79ee0bc742ccb5a061cf3926e322e11a01710bddef33555313407dfc61208064f5109ad3504db5b575dde7f443355143546f8917fea673c698beda933ab210d14ede2c03bdb4763c54a9a7fea4aef6375e3557fe689793a47babc55e8ced753c42e6cceeaeaaf59ff95cd3450e8514b7a50344f55a1266299e3867ee00d850a8cb9444421df865f6e518184a951755e6970cf390227a96455cf67ce702d390c1bd7c1092c956d65362b4358dd55f315a71b19af2240f34b9e57670eb8ab2f3fe88b962e7093ce2dfd95fc291baf780024add8abeb7516261b89942ad1a15375fc034068eb22853aeb46acb83c1c664d2f98cc997c24d472747012e6fea35b5c4186241eefe1ec473213953222cf6338111e05c62b450620284c22a3ca94c6725ef6053cbe7bc24e557a9897705daf5af42609e257dd787873ba095c41b783614c22d32bc9267a74e15372b0ac6fb07afc7d97f09da9c93b6e7eae78851f8f63f737e39331db241aa17d02036ac7cb020b8f59bf4e74fe5da76743b487fd1000e3d5ba758c1c4828a2b1911aabcda63549b18214784eb17dc7791336678f6d5c93fede6af3a98912473061ff061909740f78fe388025783179c7c3f9cf807012bdca785211c3bd5fd98fa456504f7b1f7d78ba1f715922477710f12be5904238a173423ba0b6624abc9e60f18122e137bd1c89b7c4707c63a931c921b5e845682d234a23f3c08139167063d2f930c5660fd617fde605033008206c9013be6a2c5af71fa46c042b7d9fc2a2540ca96a77949cec212fb77d33277a1ad253f0262bdc9079011121fa0aac9a5f2363af234e761b03892eb602118aad3419e0012f71eacd797c2f68654a69093335e95e68296396b7910b4fa62472977341aaec1553cbd03a9636a61e0cb6b9212482cc2816165d7b77b9c07d662854eec7dba6f555e17994e7dc2d0c44885524add17e5d3ebf8a2a4d709d99754ea06ee2b857300ec4cb06fb610ff2175037ef649bcf955a4dd279992ebd3a4421e0ca83631103207acc8e627aa6603083bd03c651ca261dc936d0742e35c37ff9b5247fbb904c61c6f02197a2082a0bce55e3133fff6a554552b3651e87b150900d5c2fcadfeb130b650061a88f7a2d9f24bd7be7284106e186c6962218bc4d5e8df86b5404be126ad009dafe08ad2a331ffcbdbad3c76733a9b1bbe6ab0f0d574c40ca77197d5d1d2feee9e099f82726649bfce4006d31aba0c855acfcd315e116324a4977a24c9d59dae9c2b04765b18994820f132957df0e7517e2d3091afdfc360934bc8f6106e8993dda56f405a79cf8ca6ea9db0c41892a57ecba2f6f9c0b133985c1cf6ee80984d9851483771a6f7046da3fab59d943c8aa9237753fe8f65f30bc45801a33754e87d24a6d2bf94d8ea4d58ab55d5fba11c98a7a014f6bbb0d704aad455fef8a784f8d332b72d79da4e0c519147153436f89a8b65b5388610c72a721894c072eb44a1165cf2c726060d8e11eea7bd07f1d073dbcb6382f25c72b26b8ca0827f1e7f4ce5f83128dbd05f7e9cccb584b87a22804810e4b8984e514615cf92ad5974e0fc90a532ffdcf6b043e51dd03f11fe09e16a1045701336c4a796fb1303b24337fe524de41cc8dda2c12ec7636591efa7fc368bf3393f610fc769da9721f3a4062845ce933bf61965c83cf9513bd36a3986a30f42d9b001410eb1e3568374d0ed7ac13b149082e3d25ff1bb7638b23b9ad4142dc12b9ec387cb727b860d4d2dac93e4298577ba55f6792e6d349b9779c0fd7e2aa782a2091994c2d011f76dd502d41ed2449769dce641d8a7f2ce711cbd03b38c84884ad0ca02cce5c57a77ef1b495a60859631966c6ebbaa460a164b23a6230e351a599b0eefac57658be88f46484cb3d721b2534559e8e343e526d00c81b22f5279fbdf0030ae5a0615ef2f89d39bf236c5edbdfc303724d333310c0973ac08b1f83e3fdbe44bf82347b2d07546a68fb6e4b9327f601b82b10f4dc2e06daf6d8639826e5a93d9bd71d5d1447d66af9c865f3d1b259666be236b9edb320ed890f7a54a3bb438351301a6c455415ff017b0413c91308437ffd2cbc509dd4b107f418dd3d7e38c17b1e5ea198c4abc0f8354972ae34b79c18be2a5b71002b10fa3464513c39c283424271e87167aaba526c4b79189cfc2cc2833b7f53de507af34e6333d60403ce08332f943d60f180961a53de4ca42997319113c074432f63f2f6244035226ea98fe57eb43398109d6d45156e32722e4f25cb0146f04359c404cb78cd7bcf494777034d6725756498807552302dc1317fc7d51995dfd747b374465098e0bcdd61043109d0db37d65098973b7bf12a97429af904594a20d9b1b5fe246dc6fc793d53b43360cb025affab6902489cc2a49fdd9232dac18316e357571b24edbde96aef8727c208c8886861fa054cdc6eea0ca67a49a7d0ac012834e848dde2c8ed1180683723e9e296140aca793a819d3f39bdd87c7374913b9b895071207fab85980cf33445a50ef688105e62facdc5552dd87d6546ba9f7aee5c2d52c6ab896aa1bb1e4576d2fa94afe1f462162e42cec3fb4407fd11cb52ab6e231779bb30dc87f3c13eaf80df5bdde9b66439c29b3fe6a07035987e984d788e0f1bf6111cf3b017db226e041f431be9291939d0e7172d1cce182d6675058b0eb63c70049a33323d4c51624253153f4bae7da7b18548752648264303c749a2d6965e4ee3b420845d4b75e3c74a153746261e470853c36c004d4abb7476350496f374540b37a369710605fdfa65aedc33ef762be591aa295acb4dcf0024072c7e864d2c293fd4f07d4b2afeb2398e656191787c00a016d8616251d785d4684dfed97e7417da0673c3675365995289dfc21730929c832c1e9d26353811548aae4c87048cb8027d3b98eb3f980c848e4b14cf14935c2a4e84539f29f1a4cd616fdca419114e1498c5946c2b87c293111897ea24bebfe3f5892a76371ad96ee0654dae449895830300c9b02737aa2ab8184fbe59baa91f2fc099a23b3bb34d61fcb36f2a70d8a9ae1bed240c0fbb2c34542f506898c89a0f6cdd043139bec84c7b4f2b14e6aab8bf59f0c1327becc1843928700a9d1a35cce69f414edcdae6d9b57087406fe7b156886ef158086794801b7ff70fb14216697b08047a13f964cb296417148bfd0cde25386c2e29dcd34e33c16a5cd1f628735a1ec4661dc8bc70f5dad06b8057f4e6742aca78d5e73f9e35b646518e08f9333ca3ba6c39a5fbeef5dd240454c03223327b17582bb09d72df26312c0f0dfefed403a82264785230d1237d07c33af1f5e969830a2051088c06488d128d3102fc23dd264fe7f04046d718794ed35b515bcbc3bd786ef6e1d9f4cbd6540765a4a02080e35f61410ef9293d3207d8b95f6199e9de368c7594e540ffbc1be714b3c342e69052880e42f32e495d31c4da003a6c75ba10bc24d369ea375f627c0d1fc20f0ab5404ab1d98ba6ea0842e99cdf99017e505c303c80984505c250521f91c496dfbf3170be0f4463d0952e1c90518716f96303433c0cb475b27a441277223a843226082252d6bd90f307012f51844b4cc4c64b839407d2ec73a621c7accc1352a4554eb75a64c423a5724fccf41d39c93a6f4cb1d7b7ef2b531b69f8f7f6e427f4af2da7d302a6298b6e28f8a8f807a993a8011b18c42a5c457a0b75cdcc2baf8e273fa44a92f637c923259670182cb3dced654ff4c80f3084d113b2f1e308a86628697f46540bd960c61bc5166c14d3b2a866209824453ae7f028e45956d653d33230b8515505ce06c14fbbe4d346f0e5e765994a28418a6da368a9d30fcd48629167499c5d825da29818d8d4011ebb3719018f0ec3f7540f59250b42505de9716758526c8f8d4269c23c1dbfe7a1903edb1f14eea4a8d976443943378d9ff3f50149c3a68fd83859bb082f00246ad8476b49e3908f27e9f0cd3750362f85089ed027be9d6537cdb3586c555328266451ee75a4d7bc6366da5f4b8d39d89076beee3230b3d78a535de82fc8dc83c2e60c645fdb5a1dce1d923f1cc1e6546b24380a13bea5aae7d68737461172d4bca2ddcd6762c8942e2342b03ef4f44b39b2545470d26f808bb64b36636f9b4354427d861ce712f6a35b240f00aa170b1dc3026b65c644ea335d41b0166ece634079fb7f756f2e529f5db01409817e1e60bfe7607008a91b8768b97927c40d358dc0cf875a96808cf2550bc37759f3b4db6010d67a910dc72f2007f24b4ad424b08578b74ef8c4f6407453c513936d1fa491aa782be4b01ece96b67a7073bf587f18ec0e1fc49a2cdbf8e8111b2d25634d18b1465fa4076bca687a1a404b86ceb5fb46fa7f7c3f672bd753230461fc5e8eacd3a73f79f8dc118144b74980136f8ee5a3df19d41c36a7e78dc9092c702b64d8a9ed1d2f0d3c026ae8fe3f0a4e543c1c6ae041e4bb466f6300a7063e1919efe7ad8f290073430c201d7c421a76b135e206263f90ea811d637dba2e9acabf7cfd11d8492281c256d92bde3ac0fc75264e221638f3da7fd22fac8d7e47ea59152307c0099e67136143d06544374421a00c1f8278b386882292061a750cbcf1112e37e8463b6c88e60eb4f423743a9aea8aec7228991e9e63816189684d9e6d00c277726ed3979b60686496019265ad576b2fea072f1a790f9885c5620b0f668fb80b9e0239d342dd782c6e3477620919f01f2c1e4d99d0230f7df84dd2385659fd064861fc4f70c08e378002ac4487fb8edf5329c37abce1c4840c45250bf4c029eac87e5594eabf6f135315e63187350a02410d1ad3e2883cd6d97fa34a1a66d4bfd46a0e05a7faf493ba28cdd2fa93fdd73b2237185aa9f8bfbe2a91959d46d2461627a4e2bdf056c4fe5173f4459524ba7d34f1076312e6829d4e487c8c893000fb78452dc9206bd48771e5f7c9fb86d7f94bed2ec82556d6f120466ea8d938742072f9cd51f6f05dc81c80f1f8dd4b98d51f76d79d0237d5216ec4572503d352c65a173cf45428ef3c7199535a9a22ec2b539a896460d71e3b22541c44b77c340f2eb852f5888d294865150e9b8a30bc90272cd19c5db62631367816000cab84f465bdd3ad8a1e4c1f6fbe00b4367d4e0d10ac6c8baa97b277217bd4ff5bd6abef66fdfe31a3f1faf678f10c9eb572fab829f710a0c106b6316eb430f90db384b913f0b1c680e396e04d8aed4674eb3e507fe529ad19b34e934c30a0eec001e8c56cae755adb3ec6f360315238196fbd830c8179f2dd32d2c75f1f79b18384a04f71b3b3c776e375401d364de8611579dc1223fb3e87f5e83a7fc345433aea90247004c767bcf50c2809ba10137fbb28755a6361587f2029986511b8c5d64784f7398da6a2b1eddfe330dcb7331a2b453c6430172877c85ab02d9f3332512e00ae36e8260dea7a3c927b7e285bd85cb390560bd6f9a05391fd1756cf11baac9102239996cdfbc8ae150c85acf5f0b68889135e24a3fb05b0765629f641494d4d281226373fc6e5958d46ec061ca79b0d6020592417d135fd2949f4dcdb4010a0a5377c1de91138b0060db3ea0fff94cfba1b6adf5c8d9b05b728f20a463d8e31a84b61e423b8f6725856e3f57ce0f2d72124de3f541003cc2d7665c00242f6449c7e42c49eafab012423c94c906f7d67e519e9221bce86b94e2d13991eb7759b4d2692fb9e2e3972781f9c8827b0a3630b33a61c2b19606a047776709d11e36dad2cff69dd82c8b6e0765603cd026e6175517214a26d399879030017b8c8d4663c2e25044ec67a76955cfda1c35c9d02082819117b07f0e49a68e3e082b2fd18a143c1042396ec50280482ba90682ae39a02e01e1e1a1dbce1406ae6a95bf9485a1642061ca2269f156a3a8088aa740292004780931b36bb607c199bfe2d057b0236ea5954cfffc3d74108b4e09c3337cb68ad575e862389b301996677755f179b4182ad40e4523cff0a58d524ea9bfdb01dcf96d95cd98859730c5667663a4ca020b1dee11e884f4570a8acd0b29b379a64b75945f5f1f81b0af94c0e575b99bb5b8abbc542e46e6b1f25b54bd24858272abb021d94929511483d28e72ba263330e108bd8208ea77f253a9b2fc452b63d528dc764a683d9360ba97d04bb863f7c7716a53d437ff863637ebda6099ab20a78166a489538256e3556ccc90bac3bac051fb8aeac79fad27ad438d63accd28f5c877dd1f18812af3bed8d67b33d90f04212a1285261b7f2103ec36a70fca80227a4d96cd5f362720d087398066286b86528194c6efbe1bd3e911ed1b483dfc8438b3f5717fdc63674ebcaa52baf078d3c7ccf9915f470233de4d29aeeccd86f18c5236f5d212f9d104fc082303c918f68ac0d39b445b24e191d1a342b2c47a73bc7420f2c8914a14b328865b5f3537a74620242be9fbbd311d5554107fb72e46868bdf67ea1bbf26894127d43b367d937a1bfca2905e89c0a9001a8cc2c66af40a5fd1eb04af8161cf5ab53b13816c43cd08798c457449d515a01ee9f13253c2d623ce7b0858a8158aaad345995ead158c6e4fba5ceebe9179b6f0a4be7b5301a187feb8a018a3e46053f6d0479f6e744d346d92f2a965f7753d04bf595cd3f0c83e68eeb2aa3a53ba5b59f8f7de49d6e584f1f2d8f5f457e1f7336313e49b038ff61819268fc1a2fa09e8974f7d0f96fce22b31b1392641d2b0ccbb66d74fc5cfc9970e39df4fa5396b031d21646894e8638019e0233b46ec59f675c3063c22ca12d6f9040dd0c27295fb2c4c336341a827d3ca6759a5e381bfe56c3a3a97b3312fbcf162907f262462876a381f0aa03d382d9b3261cb606ce3775428649832edce5b2c8671df1766f9fec9e1001b90b57a510de2f38f32d4e291a9e83cb1670ada4c79b3de29c0e8db0bb78cfe70a337e6a992b59615d5cf28516913890f95b7884b54b36aab674f6feae818384a236cdb2dfe6ce15e90dfedb554734f429036458b6eeff0157022c55c71c7912970d4af7f824b5bb3e2101cc6f81b9afb45b2e604f758a14291f4acd79f75c09fc15b6b7d1a80ab217561994ec3392d54824f6ddb5259ef36836ced86e8335367d0b377bc88e7ea3991f8859a30ad709721fe96112c641de4c56210776e3209a8c1cea1f96f261285c668a2b5308688df227b572662cdc48351438e09188d34900133278de478c7f4112bd79506c3155bf6ceab1d152cb9fbf5f167ed5be451ac62d2c663be16c3ab433b578e95699a1461ddfda61de8751b86d4780cef2567c335db322979890a0d8249bfbf9bb76ea0747c5f29d207ca4b526afce9aeb6bc2dc37468c09bb39dfad7fb486438c58fcf65c867948b6e6ac260f6d71475f3bc390271fc176e9e04b0e5ba01cd303e7417e4d28c28e1af56ce10db31829ab260dba77186b6e97860d7c2d87a315c9d922272bf2f9377835763174a38336c722623552d74a1a53b015d4353ebc92525717342abfab61dfbbcc52729ee3f402d6b40b1528980d71f82b842225013a79e3df1d45489e78323cebf20b09570f6cf529f30c39578610da5adc14d07b45456e26707d023a4a752d3d511275e6975ee3e7d24e0cb94dc599d1df5d7b8c01b73037791e196e954421812005fa8b793e0ec408494f943ab4d9abe32fa5120f45c0f6bd3e6d784575528e2c73db52c0254b1d6b497c47fa3b8dd1083b51c49e0f72da4404ce3bd1957e93f722c2adda86eabee33d7e58c107f0f8cb3e8081238def1d004a98c4f387ee01c70ec1e3851f087daf0f58246fe6e6c2ec296f9215fd6f693321af25ee26ca5c4e7f20d0450d72ac3603d213e5138de6312b2735087fe93b8158af64ce2e6cd5da04d6ef06b708f99c3c5b122b5c841f936a57194eff64cd681bb112a2f221f7690339e1e97dede834212fbadc28efdb2b6f309c7b7adb2596077815f909a856e55385d0dd5dcae9823fb2902e560ec0d42a19cc3c7a8310d75f77f104d8ef2a787ba12fa41efecea4451b3b2c6b54ed164740cef0dc196ad06aa93cd4bbee5a2f78e94d09c19b0cd717718295be3d43b365f9b368dfc5639d0a00f1893e0616a840f34c7cf91cab544da6086a96d5112d1310c53cc50db04d7a4f013e7369eae15ada54caf0c6b9485c08b586cdcd33e011c3762d40dae2324302fd56e4931e1c43260fbc80473c4c568320323cc9e4b77c1faf500c435e7f082286f2c40f2df0179942f4ddf0605878d7283c05ea90f21c47d9c6e3cd0f007b8fc55ec04a88464fefb65c780f25744158d8361a217a1e4d790f0ae9f4d3e57643796cb5be18c25f708cf4a0ec6b2c6bb1f7730a261aa609e3ab463b7e5c5b1b2f1a45776dd5ff3e16d7ab95857d601ac589c803a025b05de08a6695a0022233e81072d226b5fe78f7b220fec63b8e60f59e00f8daa143096be757f73c95df18fadeae740b8ef40f8c4ffa5245ae235b05fa76c0fde5f146cd68673e5d063b736fc7075b16fc9465550e9375590e3c44c5fcf3421e1e1b141298585dd94a4d7b1586e47ea6c845079aefe9f487996024a5ac796013f8554f530c9151ab0ec00bc01889e0f3baea03481423f1f7f06379c8ccfe7a3c51711b3294d2b35a96b274d221cc90f080ce5f688257d8e3b9b963a91819770c3b4712775aed777361a2213a673ce7420b964702611c4057b600144f355c72af2a810c6adf1a959256eb35db87eeb4095f5a4b529f8a54e1f9442c5c02293e042f710f19cf829c0efe4b584c521bdea4b41e11dc1121109f2d2a706512c670d352cf5517dfcdd9e2f65a50ebe3a0341423d10fdec49c0cf19e9047060dc903c7247a0583c6f58482f8f41bb7d125bb8cf65b76e4d5910eb5c2634a90eb2c2ad3a9763a6a9bb7da19569219307e3c3d3bb42c0eb253e89cb689bb3f9e550c683436b760b8a0ae0ec07ea23a68ab3e34ffa18644173bdb269113f01f2088c23cb6d61a06c7dcf5dc623acf2ff6220562c7ef3e3edc51806f12def15b517111c743997b6e9037fadb9662a7520a0b1cb41853e70fc7011707568a1917eb998bf12908ec5ca896f3ffea1ad53e072d85e1055a8b5ca7df71bb4e7d3a061ee3c530ee987b130887a450b919061e2aa900d7fbc7ee4426e8980879a7ab242e06e2321ffad26e4e8d16730124e93f1b701b0782eefd1a2ff5aa28ce7c7360dc807fbffb383e237d6f896db07b430101a611f6735c5d1c03fc6015a4fb3d2ee549687f5bd5bc1ecd0874ed9b70964db3a82a748d6ad337de9bc3f89953c8775348ac061c3da32b170cd795188f7e6c6513c84c26b2bc4f1c9f5df699b4b821d0ec9a53c390300f4d565e81923e1f4e1d575dac1c159d5f8b5ce97ce0ac9135c5f8660429d1302ae2b8997c103de25b4154ec0fed9bc21a89f9c767a7b42f06e893bc9ad81a244ad9cd712b51e68f4e877242cb665edd29c9b371dd66682d2d776d9b5b0683cc2630a1e8ba0ced6b5c6978ed19f7fb6d76496d9c7473fe4e7061bc5d407d14ab02a61c9bc576221c49e1318c1184ecc972dc12a4732040992e10a7a6b070d4217e23f0bf139632ed6b7619ab5a75a00a74f4eb656a7037e2657c922ae23732454a540a3574abdc080d0110fd06943eb84fb11aa35c3a8cee5bd2259604080b345760f6076b6a95c816e4576a603adcd0444a79301c8fe91020f99147d1730d160cbbab5861c9b31a471d45c06e09b169510b24467124e83748a117c62b5681d64728f6c74ec6a4e75b1d5e970ed90b69255d15d3556a7be327e9222ff2ddf30e7aadd44ea7cfabf063893f362a6600716a525f7793abd44d5cdbee37e8d3da38106e12bbae5a11f54edc9034d4bb463e17503b5f828485302786f181bee3d9376377469778bc1fc46455c56f3b0821176c4fdf6667844974181e6bcab46c4bce4ac8974c02ddb7d36fff3c28b60b93cf64d9156f0473cfde2ed27f5a505410f809f72403a06d194a064e2a98b7df41f3759b65da56dcc9d768777ad45d1124c310bce041186fd0093fcb68519d68950d1473cfb5ee36a12d2db465e8171158e72999780401ff24fa6c88e9d0e1d9b2465df1909af5170ed124507b04ef910b154ed5497f1c17bab51399236fd877f9af4cbf620f6e8a045460486622fc3511626c00e149ddcd9c8b37db875bf39ff9ad573547d0d103593c2f0ce02c4f67472177c103d795b0d27f22d7d79302a860c04eb9ca317ce13370591e78e9adc9da9f22572ccd63dde85807c7f2a8dbec3fd86ca27a0832789e58716e8288c8162ea603c88ea62ad1dbd35e233843d4dc4c465d50554e43e3d29a472ba409a4a06f0f67b35aeca2665264395855a94f1dd3b146361ae693821519652aed5675e478fe4cd723df7ea05b0901f014ea8d284b2a580e3c927976841b62c07934ab5725e12fac0ad9be4dcf196ddd185d91d573c27418ae67a7e584d552f78240d9d8a256160be5c6cdda175a3e24249d5e26898d4bb7bf93a8bd3949273587b6d010f3467e6f7387efacf59a00552984c0e6762b7e108c909836ffd42f9d9f9853608a2d3021e00f4cfe62613eda6cab6b4b77bf415c37e09c83dfb46db849acf2a2b96035fd54e2c786787c52d5ae4136ac971c13a02507d7566f5300957d94b5b56e9b200c76679f5987c81d4471372a62823f4f9b3fad824e77206ba8e25d030c320743b59dbcdd004493195dea92e437289e13c2bbaf0be3e1917c96d3463ce4cb2a76797a75c4c5614f202c3820c7f6fb5d308270415182fc5f68d2c6b9d202a8cb6d41e495434c25b1230bd0371c015872647516bd550c7bf97526226a73e4dedc2afc71f8246f5f835bbf1d46b1c4426778abaab7e699de8544de0a1d2abb3e3f2cf40c208f604ef42a99191429c1aa391d450de0716a3c3b2508c3b99abea75f7fde1abdb722d717069ee24c80ca5b8277453b6fc81eb1962f49459824078fe90dba9507dc68f13f1cdc192d781045a552c0be2006e8d8622c7c719023c00c002e35a539caab59f0357b8ced05831e1f03a14564486ee3256df7335ff6601b5b171b5b446b0bdaa666ceeb8b5beb5da8656f6b3bf98eb663507f343d204618696917fb15d7254b08396101857ca8367d54243a9a33a8aa5963070c14c0e7385219aa0a8c198d7f74458b8aa46fc31f07494a17bb7e4c62ed3e5478d01837485128ae6bd29da963c75cb0dfbf334fc9271705cb09fff4d1660df8cac514af5b0e43397cc0574d6a9f5321e730925c46111d6118ec94c0adcb22fb3b5b20614d520aee026ccb8a7e6564d54921f35f2c4f4d47588a38b75dfb1947e35288c5c0b46e3a3b805eb3dca71e4d77408874273c3114f225f63de5ac70f9acec922f12d66bff902d9aacae002200567ad0627b7220a72074d29bbe30548f106506ef15ef3a5f2b78fbaa28213df348f6e66bdb0d7e3accea0e9d03cf42c28229bd1307121599c0d0720c91352fbf4d20ac37b5164cfe1933dcd51f6262fcba3a27fe642a05a6f480d4537f7434ffe53214db83860b6dddbff9d3363f795e6e7751570d3159241b07423541f97ea5ffddf0ec4e8677352fba21a430316e4af8881af8dd220eb5d8f1c07b43d52be44154d4594f8c0e1800e2d8adf04a0d156672d136ec897dde14c3eca339030e5a8f3d63dc5c1565859702f7fa4a605bdc002a1d49589e2fccd2b26d1379b221fdd3313c2eadea728427b361156e7d6cb36810a20fe5c44e2e6d970aaaa752014923fa2618232d2eea485e8ef400ba5caab9de8476aace170ee36a9b45f41c23d6b1aa3969a38470c51e73a7bcacbd2db43bb46386d6786155e31734b991e8219b7e46bdaa7f0c4ec2b0b66ae1892b44a0974f81a980aa013a498f4cbbb929560795433af37ad7324803a1d6200d7f210f5c94214267781b2dbb080cf1a6f508799f9bb3b90eae1b917e3752dd7fdd2cca6d5b184d4b986ef2a1f1c88d34be5ef166b04056cc2500ae78b2c09ecbf953dedc42834bdcba3b380ac0171de68d3ac269bbbbcfe27c696ca4393902a6f227e013f8b3f3f21d37ea77fd340f3d83405aabf0ef15f43d6de9679080bfdc3c7fbfed9be3da305c5fc1704e8aa8be186b1a65c3213299e414d78acb8c619c7838b37d7422a19f6576f8b04f79bd38e959800364db60a24d260886ba64fbe9c15ee987d62b49f6c97b01b2d67db594a80e8cdbf29afeac67112f4e191be5017a0e110f6fca9e42f075c71624ec873523622fc8d81ff6265f3ce03b0404235169012ee46ca625dd6f31cc686115d05499648e8413e3d7a4e73770acea623deb527453dd405d3782c30cc8f5ac713bb594332a978861c279d676fe353779f20df348462a3d0cecc3d210b8dfe31d088a044618b78dd574b3372607ca5a6cb93cff4502642c10778747116998a9e395b86e78c6829ec480e12c6e0ce8eb49e2c1367cdf9e1f6cb614be708f84c0f2a3e5444f5be1a5379d3bc41d929a1d607390f4579ed3fc0866fe3d4ec42e34fc2039cb275d6312fee400215cd901fe50321ee32078188f76e14db5591ef3736f06c8fc349abbfbf082098c63b29fe268fc8e805a4b148308a9544556e693e2288c6e9c1105c9b67722f29d6e75d3d87ed0e2a95374cd24f244f48b458b5af611d99b2820c30c923abb0883588aeb8382d33cd9373d36b4be4aaacc113e70017de9af48275548be238b1bf16bb63384d087f2e74d7e40b0f0af189418c17f03b5f8f99038cc5427e405033c224448747e2e9c9830584efea8ff57773db3a5e30b1ea764435cb46224e633ac7afc7153985ce9165de8ccf1b807c7c8752415cea0dfcefc63e33021793a744a245f7b5b8f55ef656345bfdcad4953c36a1413b804fdb2a62d8a108472f57068737e32e97cdca834334f94a3e00eb1e637f48b8c4d2d4e21542ad1e6998c27a74b29502f1769468d6adf84539255863c262a4d7d69e31b4634abc2595170313f27ed57085ee1fda03be708d44e5d4b564ff3f390c055c197439763c22ba0dedb103b8480527065f82d54bdb013106b6d08e857bc9c3dff825111b30abb403324072ec48ae1cca8c057ecbd6d981183332b0a46bcb7ddc12d3afa2d9cdc904c92209aa8e64ce18c3c3f689a4f806d15bf7380203a7810241a110e3b1761f31c38612c4cfe699de74a697e04b1bd8e52330f12f0a34f78f4cf423c08a5e35c62cd4c62eeacba142811676aa4f615d6d89f6092d8b1fc87161720e4bf5a5973d23920d2fe1f7cfeee2416df3ce5d3feb96c646944753413c9d378fb3329aa31480c676ad6e7d4f71b5f5c4b65243c0315e02a52f5f02e5d050c642e677e343b851a27484d6828d2986c4d1be717515b688a0fecab02d8c6c53b65377d5a6f62d5de39b6020b495348a745775cb7bbe3a23f680e71b8707dbe9f7deffca0b00d235044f72263a7a2be443553474f237cf6496bc20e9d0fe2914309648e5b57a7f73752f38d4cf9fa19f4344a123c3af13d061bbaf38de33ea0d866df5a0b31199bdc4a815dcf1155b08e561a69c4d05508175e6b89ee657be56f524b19e55ff23de55035f1bb4f0d17716b7f1b372b24f7ef28be533a705388306633dd39c334d19b584e159a634cc75154e87c1c68e36589522bbca29e0374fd42dedee3d02252c950487085c56dad8a7aa58e88d76bc882679a73110e8bc5a43c12dc402aab21766b4d334eac15b03f28481dfa74eb25d615a484c951bf453b0e15c1b3906c5fcf3906f4249f162f7d4a4cc5389134d0af38b35686275825ab08f83f9753fdaebb58ed346ff70036fe2c011304f90caada44ef8522e926581e2aa12d9756c6d14862f7208197bf58c71654b2264421b2fb4d65524182d1a57f6b164457d39fa8662d5b67ef2c2b71046abe0c3ed97e624b52d71a44e6ec35cc6407fa554613b3e5269a8bcc18f37f6b356ac40e2eb4faea08f8509815f4ee800729317d03b742e965933de1c8fef6ff316b0a721f4abb970d98b564537e5a7c013a815795dadc3e7ef7f108255c4f8672f0d068f9e2f54908d3d303be0033266ea3ecb0d0587b151d6f959b9db110dc1b1a0839dc866ed56bdda843176db1861af0e12fe9fa15b63a5b2a1efd3c9c1861364ff60a3db0137a8166f61d89cc6b6d4037e887cefc0867aa316531802651590f5b3bb2a571a054e549c8e06a50587dd4782b2fbd856f522508a4a63d82494779bf1dea0d94b705ca8d0b6082dfc27502fcbc61acb13f51d01c4801987bbb3b7e6c17ee27a9a63a225528343814fc4fd1cf638ea813d44020e9be8dbf8b3c7be7a0832c64cc1453b30373b46951de34ca4062a2f1a7fe6b692832c114e6846918ac4d9891cfeb04bb1041ac8689a972c8f2c27f289a8940a117948cffd567337f0acd169e76c505545ee7e16552e40e2d5b75f956fb6d7eddf30986c5a1fa1aa80d2b9156c0103fb7c82acab3a7da4fcd79a05c9f91227a794b3aab6d3f4009580138582653b86d4a36418ed1a3cb7c32a646b4fe628539d159f65e05445308f8cc8d4e907ed620320da7d6d2b14b1b17b6dd1486f407098401d77fb6e98d70839919f3f6a4f31e0eda474f663f8203c583ca8fa657694881365f1c37e94c30d5d06ce311d82772032bf346d81e0e1daeb3e268bfe46f04a04b725d26e47e2adfe4218d4082b75676bf88863d42c52fe0bdde959dae610f9f987ca2b57a671e5236d943c064a22c04742180930abd5c86427d6805e98d7145302cd8fe5a0c05596ad8741c09ef439ff56ed7721e836c25e0e38c0300e73c3db40170c735d25e812727293149407cadc5f804a79b1b2653404de18880fd5952153868077f7b2bc7cd589946ac9e6e205fdf3d08e29528d0281d87e8f1d500d63128e3ef288b2c41233dd94381e000dfbb01e85f3a6234ab6098de61f443475ea73ceb7b4580072c4c041a5a441b50f7e156d310135f11945c8e4fc06a8d35668437eabdcb7c673c041c828d7a425ef90a51f2e2ae6507d7d7ccd13495c955d6651607815f7878fe92413d75f85522d69c9ec6f52372492171f21c6bc3f0464273eced69e4e806ac58ab1de790a75d1790ab7b6bbbdb72b1eca8bd17ab512f85acfb9691fc700364797f07f7e62d7ddcfeadd99f5244616fe00e92339562005ac34d839258875deb5aa0f6b89e017f2c7511d73c6d8529c398d4f96348fa04c847a728eb4b756fc07bf513b472fb6cb2d60c3efb1a3d5c83d9cba07113141a9f699d3899ffb67deed877773524b941439a190146dfbf33490ef2842f00f635372b5dcca94c9a113ad52a328c4e402e9d39eb28745153202c5efb37b025dc333f019a10ba360d57f5625fd05cde0a69b0de1809ea313f1b27c25eb4ae9c9f604fa18f7117ae17662c931ed6b1247c096964e88e3de61e70bf4ac7836a3efa58c3ff1efe6d7c815ff57e357d5015cd4cc197e2ed7ad26267841f3062759ad1697288664ebd84891ae64784bc1c9cc0568385bcfddf182c6a9e797e73521c2a6fb060f43851817045de02f8ccb15ab4185fdadff0ded48a74b4d1ec3603fd6c371e140cbba7870501eb89241def06e307d168eb88c2c66e24d67fed226da7481e95c1eac56670c029d6dddc67f8a86351ede4659b11e4741c8330e5279ae3936cd242872e1c1da161583da2605d29e32d1d9b0f520ce3304e4ccd489755e7c30d4a703a3a30916e30bdfc0db0782a86584eb70bffd3415f498d291eb02af6f43ffe4fe91310570275d3206aef297f2a76ad5e1af20c3d1e08ef0f51f98c41fa3af8325137eb66965bbb81d2f4ab4f720cac6bfb3324fdcd3b6b6319dc46693a46c97a54051ab5a1797b94257fcc4e010f0070ebe80a99b704a99791e06372345ead9abb706351997e4fc55795cab9bf190abc6baeb049626f34afc5854f88826770f64009835c6855990ada7bb3f3d33ee48d54e16ac33f7ec00d3cbc9a84f44eb9d79b35fb260642ee0a30cb382d9a38d0e300d1bf76b56a5644516633d9a321c9175e0a8bc5ea712d560890cb805173c38b3d0db20e78409365ff3e6429a81ac97d3f1817c7d12ce4a2f58323c3de1afa418b58382c293b60dbeda6add69b0e5e730d1f9c74430d1b457c0147f4c64d984c383573d9236cb33c904f9bd77c1ca721bc6f3493c269adbfd0205703e45b6dc3b89a51f9830b69e84d0b6477b27701ff67f8e89dd72a0fa2e333a944c34fa9cb44a16fe9915fa4c8054b45b605350c5920566bdd4430ed8e8caf1650615154624bd044ab191792f7624e5cdd903b58e7c0fc9ae5447a1175b5e15de2480a1fc707fd105eec3859393f3009c74574c093dbfbc017c77d93f8759dde2f00051c92d845719f6b49d6d1c92a1e62ab6042a62d0bb40b2671e6da27ae8e39505fda47333de0daa4612229056596e8401cd4c46e613f97a11c4a0b84967b0de97fa11a01818e138204d06acc70c1f2c14288384ccff8b4cf19b98c6e2a34cfa53c33397d845c53ad7bea8b0977c3247107d0ae7d6051fabe571a66fda7c89f7b5effddb5add54c2a1b4a6105b094a560409731ca83a2b0b132f200224952a40075fa43e362807d2b56928eaac3d17223505c2115305b7404642372c61f8a9d9a291e4322927c4a7402ecfd501f4c90323fe00506b9c66c7e05e8a166c2a466cd4e74172c391fc0971253ecbba2db1be86dc078c17a681f9c4d3be356251c4ea27a3001aa3564f81f206df40cb22821e103772c7ee2d7b7486b4d858bfce942d104b6be2c223ae22e4799e1e75c2b4f765bc55aaeefd0bfa217b6e97e167be3f64f3bee03960b403658a53ab50a3014c003f0d0c7716c1ecb756144d8246145c34adca96bf58a53b836aa82074bab67bb58458608afe6a5465f8a940a38c902af2f204b94c2b3d6eb0d8ca1cee34c0ff57b24357c2c17009537630b7f1f5ef0ff582d2894090381f46f9bfb2344d76313677579a3018023b8204aa2a158a83350630101c073929c4366154f1cae384ece4767722fa7f1bffa3aae03fe84ed8b6f291f07e306239c09593d457d79c683c0120d4fc4e8f41b3f6293dc8638f4cb9c4ff36e6d38f8bf2b2a4fa409f7ab0177621bd9538af58e753544057035954ab8726cb7810c1d04d73b92ed775d997768662961db46d9ed121666cc1e9537b0db4eb2fa358a60aaca359f8e59eb24aafb71f4347f55c62f4a4229332ebbfa039e2f8e6e4d0d541acd70c546fb49352b2e3f2c511bca82a768219dfc2526faa6a755241406e0d0dab60edc04768646f8c219bd4ef974388ae97ac67667b6c15f022fb018c41dc0c3f30872aaab56ed336a034e0272732d592744cc64ec9dd30a375f1e6d0bb195962e2d2358c976f0f715071e94fb3b2d89a257f080505bd65535678db48ca4c1e4661bcf60af2a6f4eab2a4fe57f3e0efb31581162a116e68a0432226103a483bac802fb17098e39ccc73f2c7b0cf1d6f65877e6e4945e425034435d7c4cd15250ae6a1d7c43f7f2a31f22d61ebd9e690af72c098c8a684e27454b4c4deab51998917c2976d359b260847605b735610dd3ad677579dadfda17b90937f8aba4b969083d73bf8b0dc861865707136d055ca6581ffb512a9373715740d122de464a1f426ec073ee4d47a09e12f483e7ed84be666ea08ca9673f75ca1be833c3597cbff327ab243a306a59996411c37908a7ba3a11bc6fe6d6c9aaad35c2f5c9859c08704d770e435f84360405dbf287fd102c3c5c922bea1359360f007704f260231e0018cc386d668824737b6ce0fcd622b02510cfdae8370d7c584000bc1780bc5c1d440e9136b6655c1a49609a5886c5c7223a9e0c5f513037a55c3e466b8efb371d139db1687219d79501469f83e5c984ad248ddde3cb5793ad2734988da37020a15115b161668063df3918f81d11abfa003a371850b404983607025853073a895c30d0afc82065ed9953263a2350f94de5710957c60590c5cb531896962649188b5faab11da43dde6049810371368b1af24b72e1fde3c256a00be37507ce56720a0dafc4a6473040342af77c86933701de3389e1b4671ba89c531012c1c7d792f30cf2801ab03fc68432542d14b92ff22b1e97d44574bea2f2062752361e7f6c536477865f4918d20b3c5d81ba48bc5683033ddf30034d7e4e508d1388ec8f66b23f7f86bc576d1dfa69207ee8c31855b52ecf33e0a03c50170bbd3a54e63dbd8f5b32928a81b3b78c5e2ca9fd28da9a273a875d1647444d67072cd21ce1243bf14e7a27614bb3d98a13a8ec8f95beadfd0032affa56e73f247649518332f5d7861eb071204d6eba0e055d2f8811ca860c0730caba221f0e68464cd794055cbc087f8c52bad032b49078600b064849ed533dbc84fed5e29b005e08da99464e14621938088578cc3cd57bc6bd7ed5eb4f705e7ba8b62842cc6327aee738a7e4b5d67392e07fae8d34f607a685f0dbe3d58d58cde13ba6cc715c795faf992bbb789d7c59d48f3c8dd18b66bfdad0d89420544377e8809e7bbd442016e1f09454370b25d599f37ee2fc922bd4b7c9956624c622004213d7a78a1502cfde1c46c79a5d5b0908350685ae2b650b00e55f8bfb475e1319be6de97c3b602dbc5886b3b67127c39e680fc5e5777eed79367511f0dc710e343b36602e54794496d9c956a4b1547141ddd69ba8db2c5ec0a49c4c4e8e3ddfe693e8f2a7886cb611aca340be2a48381d19ac314df264590e9521d3f0c609f8641690ee369d18cb4a8cac547f6d5f955cd46a673b6f2d2707beffc356bf59294a655a2b44c8007fff1d183eb9f026a235b730c4307132d4436ae6779e55748b33830a1a12342525d4ea671d56ee1f071aa27260706b0727cd7818251d761e5591a3723dfa4071019156991ad94f2acd75116dbf372a046074cd1874b2b5075dcb128bb37ce20dd93173f2c60522001da34aaf0c095f1d679e11c92c28fc4cb9a20819142421519304948dc4383e5a51cdfbd16705fb54940bdbea94e61f4eccd9c6db02f7130782f91b0874d1582ea14988a0d3d41b4ca6b3ad1fff0be57a23e3599efe1a5d4820fcb091150d1f659bf5b6b5a180840841867d495bcdf87613a1e49178ba2f45a8d180d62389364c2dec7cf5aacf265c5e505c789c13ed13f627a5b7f1b1dd1e3a8fa38dfea4d335443689b8b611df1dc74132275eb6a945bf94e1fce37f5a7bf0a243e5d466a1032491bcd29ca5c91cb87781cc1cfb820fc61631953c28ae3c24f256a7aa3b0e6060d0fd33052957645efdb45b0027970ae1cbe142caf43804e27faeaa4e22717c97dfd3120749eb0f6e95f339dc0a3d4b779e7789e3afd46b99f91684d702b37f91ce3bdfab7afd68e0d1b05fe872e027426220ed99fb5f19f59785f1cc99c7704973a80ece5e9f0f9de0aa11fe75832519efc73a22a1196a92de16ec0af363799a21a95b1aeff61bc2118a7aa571186ae654f6449ffe6c158d129fad748b19577e3077ddcb270b28f9abfd342b940f02097ff84903e026644a6b17d2715c7037f733f8d6e9f53542b632b40bfec81621de5e5c0b6d30ab5d58dc27373ede9a55e4cbd3a073191414b6496d2fd4e4997e54f5b0d0b97ba42821aad13ae3927f6a0094dad9ff6b67786e5ab1c5ad62696ad035cf6f29ceb43f1b9e112c9d6503337454145be4080b681684622dc19c8f42def1c2e1b1d5b9014038d64e25cd1a575882e0de29515a1ebd642303027778316ca3884281789c1df01aa6574161246b3cbb48c8efe18230b41f61e90743fb48b007e28244d8d52f20fdee0fab02dc5a40b73fbdbf4121752057f6a0da862453e0a1f7b6bb584f64e518e8edd091dc4f4307aa4f033d880d295762ece1345559debd0fb3056ce96707a3a3d8290e45717ba7e3e13074571ed7fa729b099d7d4ec38e0f12812849500feeb79f654f1c379cd3713a517328699a0e76ff207b8f69d9ab6447e2a80c52a36d2dbd42484725e955c723f1485f4f9a5a546f60b68e7583df3a45142baa0c3ae122415e195351c850e97642b25a6e4b14e13dfd7cb3132047c59cf1feee1400d35cd36aa1ae7ff8fc58ef33e8cd2f7b346fd7f317f64a6ac99e5a2010bc3a3ffd77160f2dd9556561450024c4e038866ade4271e8df1724ed975ffdaba018c0e2d1cfa01cc056f33b8e6d2d09da59179a1f7411005456e19f0cdd6986a711fea23ff96a502769aa874f365a71e919ecc2b79d74d3f9408e7bb13f289ec0781d5f9075361f10398d4935764fe104538926f0a6cf099d2e9c806bee9ee7400bc8d753b9015e4f324e82efd5617d0e6f80fb36b07098b813c26111b68affd87476bfc2d9ca41aa178bdc0bae068c701e72fc6f9a1ef17b6090677c636f06bc4c5c6460a1bb34a43da54e3a4da466194fd22f28876e73937cbb9eb59c3ab9587c21be52a12cce623ca7cdbf92d337fb0a7e34ca60d0bb4431f9dc5d59ea4177130a41929c4744845f6f9a205f4cff577ba3aa1e05eff7ab240483a95070085217bb2c64ea3668ad3db929ce6bdba37d0785e2fc945f7c0200eeb699c49a33ef65b7f75bdf6493ba0b585b4cc52840485802b0cc8d0bbdb83d2a63fd7fcfe9a213e7cc4c1bb7615d179e08edbac9c8292d010d3d15989ea675af9909c8903adb41fd5facf48d63106053b4f003d0fd7461c5307f22d947547b8d3d35af95d95728e42eb828741dba61032297b37155b953f395fd9f4447974af5ce98b0d29e352c0c181fa1454cec1c151fda0420f8131df789a12bd6f76c63986d33a5850a8f64129558a7c9e7f259561f75da926cd604bb7ba85b40600302868309d71846970a7089e94aae4419106ab82b487e6d2f04bbc715f69eccdc7268a4d2b20e368d62b67f6a09838c550095b8f28734bb8418550593e05b8da95c53884eace933e033d537000127c7782f72148b57be63a653df46a1f65d52f844d739a3f425fe1560d8bf5d6bbb86401b823dad8fe6ffe44930a28c2fd5d7907c3ebbd8616b6d54712aeb2e7ec0120f6686bd7320a5685d291fedc58372e58b00d11f5588a05e791518c39a042f997741b2f2b6924bb0212a5daf7f5832d7e310772faca1bd86c528435e37690362587a7783d17f2ff9b57d417f2af0df20e211a8aa7c5e4518ff37b9ded6a9e88a2d055604ceb6a9623f71e42a5f3d5bd5482385d9ef5220483f5d8599c651230b953354cf6525aed398091612bc9087c36c7228f9250e9bdae460bcd3c5bcd66f6b0fbf93912b3a6ed14f42e5683205cfe5470738292ae6869878ec0569db0edb327a7dcbd0f43140376a358b324a8e4da41312824962babed645d5f6e8bf2853a265b3eeb0d1a0da794671945f71b8e20639ab7ded90259534410b7436d7d6086d77d2670283018a4b13fb90d24e1e48fe0ef0af15ab6512401dba6ec62ca3a1706727e79f50e083371f32d98bb567835f528dba17d90c3eee4028e4c992c31f706200c78afa18b1116c79f57a8b868bb6361073b95eb9497364d6e029fbb9a45b1196d6495f079ac53ecc845102b87ac763d26c7cb099ee5749add9dbc878ea4d2b6597dda22beac1553af72a3d9b761c50a98dce26200bab5881ff4ed240023a1ecada63df63dbc717ab27e9911895e523f62c7105b8734c71bec9dcd5c76c693642f38b3eecc21332c7b6d148f53c7116e572c86c733fd73dd92bdd66010daf1791204f2409a63734183ecb6e4594677f59c5f055a3fdc27ecbc865c1e4ad312c9a1726e9736adf7456037a4df4b97d443da1403901fa4571e3cd594140754f6b0d9fd42d6e7e0b3d5a9a545988ef8d11b5de01791195d16ba467f959ef61cb1fb30e4054e44fd545ae7e939c4e9ef90cc1b70ae18836825d8fbf2e29879ad3439a8c5a8651c6d304b547cc9302351c046fed993757ea97156f621d5b8100321255b0fc3dbb8d4506e5062c4169ee5b595cd54465fe6413500abbe71156877d4beb45164dcea53f04cc60acae42aa537f07c4b7574498110f6453ccff5acb506b84782caf05a92749953f989eb8640e609997e8e4c02a707baad94edd8dc0a06750e8cd4428fc7a5d6291127cce503737622d67c2e36cab59f74efad4a5b64456df00eda031538964e275b8aec313b605ee79849fa7227c1c3d733c77f74e03534cbc9dce6297054bb7cba55924591c1b680b1ad3cd5a514383d0dda58f005b31780c610676e7a35773385573c8d5411c582010eb343086580de04b92b960bb4928d7d231ba23924faf714606b0c40b52713e024fefb8995693b9f9969c109d1283f3655f578d28348fc13cc3e980a72e1562fc079df4c76ec1843b8be3d71440f1a67c42a054051cea313ed1842a92136127aaff0da4af712cf621dcc8b41766d67db490fceacf686818f1ce3299f268f1282abb2d15334c0af591688a1e1b6149a4a701de230f4bf6126626967ea46efb46310e202c6c15b10186075866de49fe9017d740f4473118dec41bae0cb67865ff9b2fafd67d1c3891b2e0aa16a45d104fdbd96984500f8d63f64168516742480193a7fdf2062cf1cbf02d59d82401c699d50217701e16b0545eb320c44b18d79068567c039f025707cb35747e694bc10af8fed996a646e156a9aeae45b349160904e9417b7d3dfad2ab0fa5e9a130eb13f215cb4c3f40ea21762559f1531055814c7e83538c3b77c9faf815685e084a873c64ac628163b8bb2c9c0e5c6808806445dc62dc526887b68d94473755527f808f1ed248434903afc7c727ef2d2b310378b12382a66dcc2c159c10e9547f9a26e3701378243821fbdf12a31a8f698a61c64aaf07760226de1500a220a5195b47624dd39e3f47de3f8f27a393ca1abd7e13af220acf5e9ce696f28e25db41a1f86deb7ddd3c14de80d61069615a46a92f44240cf5f6507904eab93432d546634e86aa26de9d6645d7715c1f20383b74b0644195ffb168b23a0b7cce092202c1792aa6439c27344ffc229ab5888a1a08a08da9cbc45b76203af2d7cc7c3a1857d5e7b9d7eb8857d12a721cf079f072904f4ad6ec325e2c69c5f6aed5978904444f8c4d51644e352b62d10d689b140db5c7a4bd5ef952763413239ce1362c68b577d8a0eda2200b9e7f014f036c940526fc07f20c345a3d5dfce6c1be4dab0cca97a60e3c8ce058 + - {fileID: 569625742320642989, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2940678584699702629, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 11500000, guid: b0fa96ed23c470e439b349bc8e29ae6d, type: 3} + - {fileID: 8775446268706734076, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2730124660575366187, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4787506965637756451, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4499456117278156033, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8777035771050497384, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8936320662031972394, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4945643343227725966, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 902276225497889537, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 6252602016237025631, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8250293319114463492, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4394899056533022438, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 1006677740166385603, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 564764156102873551, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2792476238050467884, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 1367879115595448537, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2982569072677602789, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 7816450301353293395, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 5456343920773810964, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4410930810289194328, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2207948231675607019, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 5733517955962958634, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4820553838928225789, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8816247129259985422, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 3395625732926724597, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 7431169212917346143, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 1850510772748301779, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 3841134997005631993, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 2615181962848533274, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 1703477376207264783, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 398793150947721882, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 232433365534082906, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8691581922048536374, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 7888148428386565859, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 310257184951281776, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 3191422783276742428, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 3770663466054615087, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 77923378718653813, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 4627887233940880744, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + - {fileID: 8447414175088036024, guid: a6abc70beebfa934a9c5ef5b2b8ec115, type: 3} + _Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7648ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096d897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743e0f8591ae3c7fa2d3130b993d419467c3a1a11a336459a24f05e953a20def4426fb65fc8a58b1358f90d04e060c5c571d2b1d2df9baa98256d81d67ace3ff30fdb03fd7487f0de3b24b60f810b51bf247fb2b1b92bc13b5741d788d13165e2476a8c158cb8c388005461687b65a3ff1b24340358a005f80142ff99728e376301c37373b1d6f9dd45d64ff173d548421cd7a3aefd628aa7636cec3148a304701d0398480ecfb2ba1d13492eeff76bd706bc7d4932e661634ee528ba16386a5d2e222b8a926faf1324ea91eb185bb86b273cc874da44c2c8630469d658085c1a5814ff32331eba696b6f91e488b384552cbd92da6ff683e95e632696d9866c2d4553bcd3a41560b90932df6bb3de40b07741fcea64c975b168176f69bbafbd0e02659edc6f57fa421c4de43d1617368022761e988981c87c3693c4457b358b4774d2694e3f634120464531e71ac865af2011b8ba6fdb7a7f63dd5a236d4b39183f9dc945aee841be3402ad314c4f68000774658ced46b6504c174de2429b726e0c19a8b791aa5d085276ef6d2e49321474591be0b0c606851a79f9c5352400cf703e2433a7b16f5c2e6edf6435237e961b396ee87f91be4612239c0aa4233e7677e7a55dcb88d4107f070a9e49d5b59b7e9c41c82751f6647d3f927f2a9e42277d89e9df153fdca55f4b6bcfff42469d23fcd8dc3077c189625a00baf3af2a9114c7d35516e91e8c796f198b64faa45a7d76e4cc1385ae6d5597fece2223c2790767e24fa936e0676b0de32eca03e1ca4ab765c42d4645930bf57524eacefd8d1cb65bedc01984f90d2e25547c193f025f28bed33a98ca8b20b0bb6153fbaec60fabeeeb580bf6ce3aa12e00df0fe90e34887cee722e374a7fe70e0f5e22a61123ec64d22b53a95330f098dcc6cb6a2f3853d2248762c7c172a46c3f1a052d5d041cddcb73bb398821d6427d6aa47b4c51c2b84e0a356679245da0771895c7d53dc4281c57ca5c0c735c465ea5452b171e5977a3a788b62300769e73c717ea69523e1b1b6350b4123f2055d2455efa01667d0c20667fd04e4026c79132d15cd5220a5d361bd5a8be626b68deac856f7d7aba654bc01482cc6abd9562f4c608cd307a0b62c6c47d5753ecf0758b0a83ed7892cc0db4277b417c3d600f10f3774c4f67e5b9f6dff95a6fc92d2f12633149407d249c0605e7f6013519fcda7298b975a4262324caf69875d8821306b3d1e76f8474ed588871c418a6f4bc4de93852016a5c947150da992f0af17fc19603432768e6fe4375176058af2698f75295c034652546000a1f4747974a8bb1e79e1c627676cb950ee7484a337fe927519074615183074115cf5849624826405ceebf10f6c992369faabc7e24043374cae00a27bfed026ba65e77591e81f6560d89a621c206ce7802c23e58cb6ff915a9200f3607a97e250268104af8cb12e08f8380331778b4c0616e04788e4ef72839780d3480bc0fc008227d6a65b0a365dbc8b97fbddd5f4c93403c39f51e66c109c4892bcf8152ebb588515211c625b9c6e3456d1a197deffccd1c6aef77703b386d535e2778955975cec93474f3a3a69a0aff279d2c24dcbe87d7629dbcd92df98c8a5d8c391ec187611c171c4d84f6d6892f1b78499e0b49769f5050f8bcb8f59c3b0081ffcd2cd63e5102b6c306f3f331c7138dbda4432b96a60327908e715a9bdd7fb3d55a4a23ebc6694c1035d377e76274982a9943f3b4ea029432abf72c06a56ff67adc3add40ff1fd9bffc15f34ce503fb429a233be4797cb7f8e7ec20f59c7b038682fb81b64821a93bb1f1b121fc00fc74dfabe9e87372b8371d764605691d4f67d2a4838200775412b3a95892615a31dd92360e99d12705167caa00d52c1c785e963ca485fc797467fffb9c1ccb4a6887ba978dcdf14a6b5556660054877ee69621b7289dfe541fe63d59662974211d38bc87e56a7045b01f5905239d8536ef7de1333d8373368a6678a68f98e440e2358438110e634ff899f8f7bb07cf7e610748e30ba75e653b7aefb41de92a173c1924ed194c2501e1313aa48b7c7b6f36f745884f003439d81efe961fae321d3defcd2ad44368141db93ac31efc0e49f65f7e25a4a1c83ae5ea16fa4e8ee2706357e17b49a6430d70ce59f6c407a72cd3b85f40cff28765289346e92c6dc5539cab5fc61b92ff645c736a8c044100146dbd31f911dcbf7130845c2313d2c62294ad5a19a7e0104048041ba377059e69945a57e99fbf6540ebeef69fef22772ec67307a819189372540ebee9079c172a1a0c704785237d53ee65d146158eae6a7d4ade03fdf64f7ac7e49590007b3878052084e2b230a9170ea4444cb9b2a23a9fab924341ecd310a414f29647f2ac72d3a6b4c9ed6ee253f5f512a23b9c34787830d053f18345194c7386c622405e0151b77812fdd94d3038c0c7c80189b4071f86f0883dff9c509f64838617e3cf345414f4f2144676601e60754eb4f1e529278da79b4fd5c451e5d74e9da32cb7530f6c8a126a3e0d65fd51a59e75ea04528059aea48b6b832927baf2c20826420eaa225d217cf894167f419dfd2f26dc30235ee2b682ed387a104b144fb4b4a2280e9747974826cf783a68db33f77ea601dec29eaa438c8c69a528edcf1cbb9e341c39116721bb17028e6a7b1912058372f3162e76534c6c7d0addf11f38005b7e3659b0cf70f1dd66275ee426ef8da85fa57bc233e9148730ce9371feac373a71f203b09449ad1d0139c750f468458e687bae8543c2d76a4a1e1efe237f214611db8cca1323ecea5299c36cb1657c9877060884feb1f7af199965b368ab4080590f61d0f410a18b669ad8dd85441cb05d7b79d7775abb3d2cc51b547760ad0125bd394038b37277637e1e65d81a29d57bb555ed316909ff52db5cd00bb2ebfa14d7b7c90adc78aa07fd8b05c3a99bed65b9273df44030434d3bed1310428315681979016260ca9f3c5419d00bf03c03409195ae7551fa2c07fc16d0ee6499c57f5f9123dc62af3a7b39865fd9a0c7a377f2547fadd4a0171e4efa6749fab1d811df4f6a8260e0a21f5b323cca9a5267338ca603efe5e8554186fa7098b70f7f7851b14710ceda282e0960ad5e9cb37c059434d6a1b4c8f70907d7049a90f5986ab3b41c4c9a77014e822b197ac4085a2c7e6b2bece5212d1958afe95a213c410107e8efae3037601ccd77e0765183bb028328e704de7baf2ce236f4eb8da62c44ea1874dc19abfc4acb481e6e41b6c825951321b5dbb9207d68e33206bd8a7174a4246069f7981b2f253139965c41eb6700e57f5e371ddf5cc70eba0321fdf8402a5536e3a9a0d202f8f190aa808921260834fa28f4ecc3794503a1e9dd180e27c8073f4e8830ee5eb88266458d34db3e146bf4aa07dfca3c92bc29ad42bce020e3687188c96faf28b9631e88acf6f9112763fd490db82f18c2fc4334f9bfe37562866224c353757de4e29c9402ad16774ac42a5a46d6d22ac7a63a33d484d0058156dada6c2bb12bee7f642b1c9a1515548555a09289d5567f6670acb1a07c0fb7af86a800352f05682ef0036235b014a51364d4b9c83f4b516d637538dfcc3559d2d58258cc364e2a2d7091671815010c5b5532adffce39eee7619aafa26240bdd376fc7703a047559607a2aeceac1575cb45c59e348916d9ae918c3876c7446b8937f7af3d3e40e0e2eebf7ac52373abe886d1704f7c156d76ced7937e3a5457086b1b6486be30a89d1935a9800a5ee2bc117d197963514862d417cd8c623ec8e0f5398c46a127b8059e1a0c98e207b2ff12b8530d6e6fe1b0ba06916321547a085fc7ee48312f02121473a7a58404a63777da04e23b54e4498eadeffc30568e9a325b6c365e677f8b08a37795fb311c51bf5f7f4b7b68cd0ae3a5b9843f00426ae50c7229972496df5b78da97dd4db1a336bf4370294371709ef9dee984323cef5a02fb125775516b19eb69960970e1d8726b24bdb72a40c6b190f96c0c6eb8b1c1a1e8a05b2168c518bf6c6504014be468876e084a6ece7fd4a1f3d8cf7da5906e217182b41d7afa669fa5197a253f50bbebfb7b005067536f6875fc15406b699b022bda8c32998501696eea134c06af63a21ce48129911e88c4f11d927610a6353b7e78f9633b767b7e8396417d3f226d2460b75d79e971710d52c74049187779151f4ecb72b700de935f00ad269ffafbec75482838fb51acf3f913ee02493b99f4e3d4a20e886b48bb3fc43a1b8297bcdb128f507f7f5ab089c4027f0b0821e9cbc1389d7961f1aaf2dfcb8a2a59d158018ae0610cb914f8c7782bcf7bec3cb41dda6e5a4435353c033a435f4c30791c6aa47e69177d097a2ace9a0d73c22507a2166d4f372b9dcb54a45dd276d8373b9fb5fe9c62c9543e07b314731f48fa36ba26cfe245c045e41107ca981963eb5ce6fead6f345f71a97e1769793bd8c0d908d8aab2347f410a17505f561a68ec8752e9ba4a648b02189878605c2983ce75687b537f4e0d5ba865ed51484999052b16d6d85a3ae99cc70d3d150063cfcffc352a1255133c93327c15a4ab176134fd6f346e4d5b29b052171b8d8b215d0c34bd4d7e737850e8ad95f429b07148df6e72126f973d1d575edb646d2f51f8efdff79011361d3f7be0b43f479900ff1f9f050401cb340349dbd81c64e457023866f854a08c6fa474380b0e9577237d0da8d4487f826b887bdb2d00b5b12949946eea57a98439f0361a8befe9923f0f1b505044404d31d568fd420472947f36af28367a57da3eed0ddf789176861572e880cb2e4b97240a854042255abd325d1b7241021c8e0990b83029c808363e27c389a26af07f40c9362f353f24d86ebca7d4189651d540975eaaa76665025d96bc3db6ae910e707a2c317f4b3639045c8758b5ded75301a73466fc02432f1d9cd0fd089e2b4624e48b844cbb9c893198af02edbeb73c6d103e0f7a2a116e425d4fe37b3930652fbecb2eacacf8b94343679cacbebda052f294e622c43fb00afbc6f06cb80ef83615322ff2888fc11785ccbc92ae1b0061516f9231e8770b7efa1e7c2019f7164702685f353d906a67992f2790a7f76e204a998c6b3e5b584a559e3dfd2eaf6e349c372b7b90f9c97f69ecc984b1460b0e8d9c69b28381855dc1aa8adcce679517c2f2f56fcbf39050d10d025191d4990d942f8bca1921b81d4276c3c57c5ab12f83e0c2be519b427ed4467c6f7b28106a43986ffdf360305f3bd8b242b755cc2bc59a17788a937461012fbd34a1c6684775575b1390fc6016aba0d8ca54cf5d5c194c899a5b2eed66047a5b4d0f266c4ca0a898b0b15eeb3efb2dcde9baaa0d308e1a1b543cceec456af40f15a013072e0d256afd670e0e459fb46a760328de5278743f0bf5e8f02e43adb943b12a620e34fcdc953f10c864d79e0b0fc79cb66d2c9d71eaadeddc2463d9d79c9821b674241b9113f6fa3c34137b9e0510436706378a108e40b3543671d1650d1027342971c73200635ded0c04786c8896005f15cae8d31d80dd9a785a3577fa8054df067516063b9610f12913e4b0b60d4a5d59a32567c6208da217adf8fd4e23970c5758721480f9247f252702d09a72ae7a5b6d2ea8a413e71901ba1e8f9e12a2057ad9585f9b36dd5f37a48ded225d3d8a027fa1e2f5ee67446fa7ed38246a1fec7c03aa3de5b020da70e69351fed9263758939cbbd336aa4f12a9204c823e1e3132106c4cc49bd1b81a642a48b475eae10cab25af00da3d397ddc99d6e8307e2404c4830e4673fbf36554d53661f2038842d184ea0955ef0b54d2c10299a1ea222350f3cc34352aa7361321a6060b6c31244ad9508b50884a1a2227275dd6c6306d71420e46e12ad25e233028659d4936425bbf39e7f768e958338ba09d12682103680c717c94c3404bd402521a9cb64a318b3be551a17685136271f4869dcdac74aed4036e2845521d018513f416cfbb7b426f284e4d73a40d79a222f94838160557dd6cc7b2db092e8e0252278a7a296db678452da55d2739d0090979dca72a38700e9e3862f4c965990623af3933680c336fbb300d179f07b73297bce4820b18d81a96981962d03eb0dfc7ab81d67363a1fd456debfa2a79525a7dd0a3f37f1cefc328e0622f0c2e9f7ce0edde4a8820c0345ee2c8790422ef1d45bfe4009b5c5fe3bdbdae93012e0974ce6e1a3d9a072fa27028ad9e1a74c006cf7f75cb13601f7cb33df7ba312b332feb3d47733c4e833ded8770c30a3fc948fda7c481b92a79d072690e2800737245f57eb2dd2d4c357efd4c47642e1e780c8b504376984e77c1c57600d33f543d61f9b6b888f214e54e22bc81f98e22016e1ee54caf481721bcf80ee748b40842aef11a9488990fe789940bac23327050e7776ff124a171e81e6b036f1cd26366e601d015574876082dcbd54354c4451297a13040dc051cf280cd89e3695f3549ce5a39dd9da508a000771ff076b43b1d4e0d27855ddc76e1e5c39525d25a61cd958c74f98b6751c3556ec09a19d369ccf6936ba3c85013f2e319c3613a2d33a715ed850229356de7bc6430ef1cdc06ba2dca2e3feebe6a1b607dea8e5b1077283a66b006596c5ec225525f2c80022907137c8e045b7348a87d945d53b520423424f84b4ad4001266d692e564a1c2655e53f2a1d89e7c3339e1f8763bf0f47646952b0887b7df23138f272dc88de307ba2fbaa6a7c21b6a573aec9623762857cb092bf9cccbed5a8b314a983956033ac6ff306aab9b1e08b19660c2a37547639a2f9e409d15c51042601b767782300136b25b23a79302672833aa632baffd0178ad3169f444d7503b20ac0bb6948033c862f855d16b0a2c330568d1c0283c6c9ee60236af38f20e26f4a238bff1e1434d22d57258ac2d1c48a163065256ef111cc0912f6db67c7170ea30dcc8d26c41dbda7a62ac36eb0f461911f22a1343300690547f8211b1029f46026d7c5053743521e12cd151be19d582e854a589477c2f60d7387eecbe137582ff0cc7a773686c85264cf570014cd33a5405fa05a7288e7e3e1b791af6479d3148b1ad4ead7cf651e71f63fb86616323664397b9196fdcd67e486858ef788491503bd7af6120182e04b412397477fa6046aa4b4c50564ab78d84ccf6e54e4060a2f44bc2384dc3465bc6becd8114b40abd3760663b2f1e587970c31a132149b673b1967f2b3727f96c91a8161518c85e303dc75212252472d6f349c88922a682f08bbfcc5434df851066faaa8707bd9ec7deb5ae1764c8988d24a937ee5e6f49eb262689586c4d9be2b39d86e07aebceb0e79068d85467ab3dd9c0d07458694e094f419f1f4608cbd4af6e35fe42b81339da8706ce0771968dd2c7322d1df1c5e41470d04475eef6dfc49429e663ab8092d3094edf6e1e10c0d82cf10e2a624960cce6ed4d7657aeec90260a7248b0297c48c500265ee675f65f106b4820050925dd89b24942331c2bb73b709528840888566e56ef6270bfe670f6ed663c09f374e31a6a410120c5851ed32166741f3123f81d0d4d5b0778b2b76645c645b6eeaf47fbb10d18c88736a8d1d08e4e59729027105e5a15be2f235d47756425004069e5721e792ec2c4405bbc09d335eb645ef4b59e34569599062bd46b5f3dec5ca99167a8dc3afa61664c1efe5937fea7b7542ba624600c1251d8174d595565036f606041ce4277db04acc717c76a40cf2e2db30b1145c8b779aba9fcdd54f7ef18e471062944da75cc07abd12822dbbb99471e2ba1580ed5d7e84486147b024f4a27001c0746f973543e3f0a9966df9c8565962473226f8e2963d0beff5f75b8f9a479fedd414bacb054299ce61891c2f758fe501a25c36db871f2a3753974f4b3f8033edf1f41bce6168ce1060b7642d30dc7a760392de0981849b0cb11de1538e1af21e3521c27e8bd96fb661e9853034f2f988d346b8634dc5a382a70f2d53976a8245b545f812aef8f1ecf2847b6b09cb41a4075a36c4d3555c0ac1b03875194cb22394352a7514e3d823c75555c2311e9c624296b3c2bc429da0061d50eed07cc3b5c237e6d4a0cc9f2381fcf27744e1b42fa37ad7b00074efd6c2ba9b37a2e9534a86eb8478e571131f35d8bb40afe994db9160a245b513b55d47ffee19bea88f57504d0e295d4b3a226226f5d7d9af36e925a069cdb8e26a8cc0ee4f1a7d06af72a7fd5f131831c713553b5821c2228c5736c73f6e3eb1ae7dd27ea78475ab509737734fd70e49f15766b6787d9a48ba9e55666144360da159911edf6926b476ff6400a6baad9c9a8f4766d4f84930e399b6c5f9df5a1c6129c1d645ff8a8820b23287d19aef754bf1f4221ccce2a9a2d1f256d00f25685aa8508317389954fb40c788d53ea0b755be71dbe3881f94472833640d21683fe7aae2d94a5c6e1358af22bd9469d474214b03618efeb42d380b25c0a3f2bdd35708812a5bd9f1a22c853482cac20fdd53cf42add2093f17194a615a9dd158b492f9f68bf8aa2857496144e635ce8d89f4b78324b00ba55037a84389b4a8ebb4c370104f247c0b56690497334e28e15abcd750b5747404974496443f996de40db30652b5ae4e6578bc3cc244b2e8ae50899e431d5821193784b793bac03bbcfb1099804849d453819e27f1a1464fe46be7e3b6d7a106a581ed1b30f96545478f7038d54c78f626b54ab1848022ba7dc49c0fa2bc2d7aa5e61c01a555154a3c48d07220f29557fd0e330e626d74daa0cd5283a554f80b620582ef2058bf2e500f7ab450a4eb6b3f44029470ebfd18814160d7f27e5b28af2affd4958478544f04ae62e7d93b45a8cdb2e9678c9c56187a6deef66720d1b4520535b506d5aacbbe457c45bfffa7e9e4c0cb4144803ba745fd0fe2674ab7e3ccae95d1911abf936db515d1f7642785fa3714c65a7f903e266190e625c864639d8879016649a5007f914106661d9fe1c579f83035f18e3c4ec3f80099d9793619796f711b262c23dc2545f6eea9c4340182aba430242d9bfa3cc295c1c596b6281aecf08d10f69f5dd45400a478a52767c3fde71dd4f64da70b7b419c79aa7e3403e0f3ace3b112894af204202cf062e1e9fd9247cf985314af497773c7c448813dcb4087b18a8402db6dd2d3021dc3fbee338668c3497b847220f26a49aec176b982f21830ea9374719523b1c5802281758b857bb21ebb88c92b062d730636c363a3d690d443c32729051721fa32b60dbc8c14be295d38d84e7ad0ea2b9a0e9491afa556a94caa36a14352b308629d041eec15f0e51b134f235120b562a34906d9b490a3500a2024222324df840dbf768c663605a2a4ee0bff7046bbddad894dcad32579cbb69f3d8154d311886247116b3641d8d95e997e92aca2c050d4567499e715a74325cac5c6f884376bb0646c49a6d3979690619a54b8479ec361bb7efef86031d2d74062410477b71c40e7168d5690ea19626c576a2e9285d8ca41ba535f9654209299625671569df757595a6091d15ce0d1659c9c08c40169da8976b2cd659bf74b472feff3407547018fed3ac7d67aabae8b24c532e036a9680774082020bb43028ceab54e83226f052c62674eb6ae1be124ebbdbf211a4b708687fbcc62972234aa384afbc56d1b58b5c0168dd2182ea97826fb34f6fddc68e9da3ae4d1cb77b54022a48e6707b682071674e120b6bd6196bdbbb46258d4580b5c2a6067f03a8a48514daf6352ff7f8f86d21f772b4820879c7b9f703342e8f70c99b332b63a07410f398206fdfe43ce3c24db8513ef3013f9e8cb7436057ae19b479946c3c32a4f16af79a1b639859abf5dac619753dadbc9c72ca2916cf4f6416f944598857e10a0d554445a71922faccf4b17b6e6a700ed8aff751fece083947fe315cdeb2249df8bb0b3481f3158350cf5d22e22c095476c97f374f330d3f4d0afe5a4b7ed87e184f742976a48ce59a7401332c2b571af4dce51433ec4ec5adcce7740f90c82e0821f5305fcc35e4a99b2e3dcabfebde4d1c992864ecb1049d39d74274fe0cd5c3cfc409cad9853fee3542321b8c8f6db7c5c12ad60f6c0b2c0531250b0da75758fbfe6583f41474965a3a2fa97e1f2ac844f9513de1abd33ccf363b589fb6042266751f72d60f5326c93f7b2bc29e5119f9a24ff807e589b0d4d6532a4fcc36103e52100cc1480dca5ad5062127a97a31e4215efe66fd2a4bfecf610144d72902f79568eb51b9a74f6a7b52dcebaad77d51840f8fd4cc88c383a40df3e60c8683ac0329934065829ec9ae67e3500637a8a6df51361965d1d5f35a6f0b3966c988fe2a77efd369beb707ad3a2665a6737d6c644bf8454263ee2a017a642a889b9d1a211bd970d883ef62f62f6c2af73a99ceec62d51ac2ce408d663a2e10a67380ed624087c14dee45e73b69b2ec093bcd391e693e256fb8ddef5c66d713b000086ab05a8c38c05a1bdaa71220a6e3ac7cd5920bf33cb1a65d1a1d761fb4c558973b721c629c37fa06867a637e5d97360cb0ea01805b0dbae3a84859563679cfa000aa5be800b6206267fa7848eadb444dab7d31603826c3d148c70be490a3cf0daac37d4dc3e2f398f49b17619403cd848ca65548b890982619752fc8c204f30bc98661265d91118e71ca55d43e24654b958f71c907e93ac4a35c33b24cd4291057f369f25e0b1ee2471c4783e66c643ddb7a5c53752b04e04b9d35b9c45f419da0457cb6448c13758e710f2431b8dd36f7f571c7317b8682f7493d04bf9be117255523d3165107b098193c051be0af93bffe4eb9d17a6c25bff9527135f0490c700802246a4eb2b703dd2ee8c1756227072e443eb36416603eb714e4016a855730cf7524e3d3fe0db10649f34b54e6345b7a799ccbf5a7f40e5d19b33996b96e638548f2ff3e433330360f4651dceb162f1f3f7ce4ea8b3b28801486bab14747bfb8703bf428cb6541526b96e561a33271031d59d534524d11833780d5418681103779996cb1210753d939927ff555c6dde213b894a01df40bbe4b87a0b3c47c2613591ddb0ac5c0e11653af6ee4cd07d9fd5eb8553e15b0546d7251995657f86149486db0c7142ce3ac2a7f4dcc62ef8b52525eabf3d817015771b783e8a6c792b44edc649fa9ed16cd2b58ec6c01de2f9e22eca8b5a35422606ef9c7a25705f99d10021b878aeba96446dec7812b95559318220bb91edc10fa02c50eb1267376265d505b00c3a814376a0dfb811ca38c045d358a7910b3bbed111689c6dcf73ed3675edc23c6ab309036bedbef1e7121a150ecf10e1603ea556c911152e0b1a58c4c3217413897c14d64e54fad2733315f0c188a3717b31595737a48cb6622507b62693ced5adf69b9523e7231b33c2d385f4fb937d8918a6647534a40b00918bd3636ef6f90e046147e4389d840e4e136597ed4e897e75d2f222a5951d55695a4264c0416d36237bf085a46e3e49d58d47213e7323430264f6d2092ba3998ead4521b4d731607f644496c0fc35f85b57a2e7b203d919c900972ab7b4b2f837a8f441b35ffebccea7a09d5845fc016510c69e873418853bc4a75bbfe3d7cbd8b3219a0077abbb566fa659c47bd1830495b0288b5470f3907f05e1576d0325302b45f4986dff129ae4b4e6ea6239a7a62a6055a40f4084422e059072759c06a38ed66935d61b7284d2c2697075e6d1caa1c76e32a726c09435b26a585e902558be4364743d2283ca1d25793e461b37eb28a4e43cfdd40c5815d29b9875dae372f7c21ed9426d8d7f33a7afccafeeea40ea5581038bf86ada47038a1fc6fb44424206397c03915744e89360a5843fa826f8538d24a419011fd316efaa1c7247b7ac920159da91c2a6f1b3d527783ab9e894a1082a7868e65b175657135e52d799a45708e220e1f19a262429a811e777e23f27b152759dcfea77963d7bb540b75113b49331339c1986a29240bc9f5e492fee64cbc95e6aebe978e369c72485d4d57cc554297bb9516cf1d56ff35d135b295d02aa2a14edf2a8d8a36a3705d0ab2877161974a272ab97b63127890acf469c4e932be8d4453f713d54af47bc879d3d7f7773c906097915a8f1efc9e98661e693267a670b3dbbde1957c8b23c8c14c16c05078dc47269cae5f18e29da7a78591d376b79ee0bc742ccb5a061cf3926e322e11a01710bddef33555313407dfc61208064f5109ad3504db5b575dde7f443355143546f8917fea673c698beda933ab210d14ede2c03bdb4763c54a9a7fea4aef6375e3557fe689793a47babc55e8ced753c42e6cceeaeaaf59ff95cd3450e8514b7a50344f55a1266299e3867ee00d850a8cb9444421df865f6e518184a951755e6970cf390227a96455cf67ce702d390c1bd7c1092c956d65362b4358dd55f315a71b19af2240f34b9e57670eb8ab2f3fe88b962e7093ce2dfd95fc291baf780024add8abeb7516261b89942ad1a15375fc034068eb22853aeb46acb83c1c664d2f98cc997c24d472747012e6fea35b5c4186241eefe1ec473213953222cf6338111e05c62b450620284c22a3ca94c6725ef6053cbe7bc24e557a9897705daf5af42609e257dd787873ba095c41b783614c22d32bc9267a74e15372b0ac6fb07afc7d97f09da9c93b6e7eae78851f8f63f737e39331db241aa17d02036ac7cb020b8f59bf4e74fe5da76743b487fd1000e3d5ba758c1c4828a2b1911aabcda63549b18214784eb17dc7791336678f6d5c93fede6af3a98912473061ff061909740f78fe388025783179c7c3f9cf807012bdca785211c3bd5fd98fa456504f7b1f7d78ba1f715922477710f12be5904238a173423ba0b6624abc9e60f18122e137bd1c89b7c4707c63a931c921b5e845682d234a23f3c08139167063d2f930c5660fd617fde605033008206c9013be6a2c5af71fa46c042b7d9fc2a2540ca96a77949cec212fb77d33277a1ad253f0262bdc9079011121fa0aac9a5f2363af234e761b03892eb602118aad3419e0012f71eacd797c2f68654a69093335e95e68296396b7910b4fa62472977341aaec1553cbd03a9636a61e0cb6b9212482cc2816165d7b77b9c07d662854eec7dba6f555e17994e7dc2d0c44885524add17e5d3ebf8a2a4d709d99754ea06ee2b857300ec4cb06fb610ff2175037ef649bcf955a4dd279992ebd3a4421e0ca83631103207acc8e627aa6603083bd03c651ca261dc936d0742e35c37ff9b5247fbb904c61c6f02197a2082a0bce55e3133fff6a554552b3651e87b150900d5c2fcadfeb130b650061a88f7a2d9f24bd7be7284106e186c6962218bc4d5e8df86b5404be126ad009dafe08ad2a331ffcbdbad3c76733a9b1bbe6ab0f0d574c40ca77197d5d1d2feee9e099f82726649bfce4006d31aba0c855acfcd315e116324a4977a24c9d59dae9c2b04765b18994820f132957df0e7517e2d3091afdfc360934bc8f6106e8993dda56f405a79cf8ca6ea9db0c41892a57ecba2f6f9c0b133985c1cf6ee80984d9851483771a6f7046da3fab59d943c8aa9237753fe8f65f30bc45801a33754e87d24a6d2bf94d8ea4d58ab55d5fba11c98a7a014f6bbb0d704aad455fef8a784f8d332b72d79da4e0c519147153436f89a8b65b5388610c72a721894c072eb44a1165cf2c726060d8e11eea7bd07f1d073dbcb6382f25c72b26b8ca0827f1e7f4ce5f83128dbd05f7e9cccb584b87a22804810e4b8984e514615cf92ad5974e0fc90a532ffdcf6b043e51dd03f11fe09e16a1045701336c4a796fb1303b24337fe524de41cc8dda2c12ec7636591efa7fc368bf3393f610fc769da9721f3a4062845ce933bf61965c83cf9513bd36a3986a30f42d9b001410eb1e3568374d0ed7ac13b149082e3d25ff1bb7638b23b9ad4142dc12b9ec387cb727b860d4d2dac93e4298577ba55f6792e6d349b9779c0fd7e2aa782a2091994c2d011f76dd502d41ed2449769dce641d8a7f2ce711cbd03b38c84884ad0ca02cce5c57a77ef1b495a60859631966c6ebbaa460a164b23a6230e351a599b0eefac57658be88f46484cb3d721b2534559e8e343e526d00c81b22f5279fbdf0030ae5a0615ef2f89d39bf236c5edbdfc303724d333310c0973ac08b1f83e3fdbe44bf82347b2d07546a68fb6e4b9327f601b82b10f4dc2e06daf6d8639826e5a93d9bd71d5d1447d66af9c865f3d1b259666be236b9edb320ed890f7a54a3bb438351301a6c455415ff017b0413c91308437ffd2cbc509dd4b107f418dd3d7e38c17b1e5ea198c4abc0f8354972ae34b79c18be2a5b71002b10fa3464513c39c283424271e87167aaba526c4b79189cfc2cc2833b7f53de507af34e6333d60403ce08332f943d60f180961a53de4ca42997319113c074432f63f2f6244035226ea98fe57eb43398109d6d45156e32722e4f25cb0146f04359c404cb78cd7bcf494777034d6725756498807552302dc1317fc7d51995dfd747b374465098e0bcdd61043109d0db37d65098973b7bf12a97429af904594a20d9b1b5fe246dc6fc793d53b43360cb025affab6902489cc2a49fdd9232dac18316e357571b24edbde96aef8727c208c8886861fa054cdc6eea0ca67a49a7d0ac012834e848dde2c8ed1180683723e9e296140aca793a819d3f39bdd87c7374913b9b895071207fab85980cf33445a50ef688105e62facdc5552dd87d6546ba9f7aee5c2d52c6ab896aa1bb1e4576d2fa94afe1f462162e42cec3fb4407fd11cb52ab6e231779bb30dc87f3c13eaf80df5bdde9b66439c29b3fe6a07035987e984d788e0f1bf6111cf3b017db226e041f431be9291939d0e7172d1cce182d6675058b0eb63c70049a33323d4c51624253153f4bae7da7b18548752648264303c749a2d6965e4ee3b420845d4b75e3c74a153746261e470853c36c004d4abb7476350496f374540b37a369710605fdfa65aedc33ef762be591aa295acb4dcf0024072c7e864d2c293fd4f07d4b2afeb2398e656191787c00a016d8616251d785d4684dfed97e7417da0673c3675365995289dfc21730929c832c1e9d26353811548aae4c87048cb8027d3b98eb3f980c848e4b14cf14935c2a4e84539f29f1a4cd616fdca419114e1498c5946c2b87c293111897ea24bebfe3f5892a76371ad96ee0654dae449895830300c9b02737aa2ab8184fbe59baa91f2fc099a23b3bb34d61fcb36f2a70d8a9ae1bed240c0fbb2c34542f506898c89a0f6cdd043139bec84c7b4f2b14e6aab8bf59f0c1327becc1843928700a9d1a35cce69f414edcdae6d9b57087406fe7b156886ef158086794801b7ff70fb14216697b08047a13f964cb296417148bfd0cde25386c2e29dcd34e33c16a5cd1f628735a1ec4661dc8bc70f5dad06b8057f4e6742aca78d5e73f9e35b646518e08f9333ca3ba6c39a5fbeef5dd240454c03223327b17582bb09d72df26312c0f0dfefed403a82264785230d1237d07c33af1f5e969830a2051088c06488d128d3102fc23dd264fe7f04046d718794ed35b515bcbc3bd786ef6e1d9f4cbd6540765a4a02080e35f61410ef9293d3207d8b95f6199e9de368c7594e540ffbc1be714b3c342e69052880e42f32e495d31c4da003a6c75ba10bc24d369ea375f627c0d1fc20f0ab5404ab1d98ba6ea0842e99cdf99017e505c303c80984505c250521f91c496dfbf3170be0f4463d0952e1c90518716f96303433c0cb475b27a441277223a843226082252d6bd90f307012f51844b4cc4c64b839407d2ec73a621c7accc1352a4554eb75a64c423a5724fccf41d39c93a6f4cb1d7b7ef2b531b69f8f7f6e427f4af2da7d302a6298b6e28f8a8f807a993a8011b18c42a5c457a0b75cdcc2baf8e273fa44a92f637c923259670182cb3dced654ff4c80f3084d113b2f1e308a86628697f46540bd960c61bc5166c14d3b2a866209824453ae7f028e45956d653d33230b8515505ce06c14fbbe4d346f0e5e765994a28418a6da368a9d30fcd48629167499c5d825da29818d8d4011ebb3719018f0ec3f7540f59250b42505de9716758526c8f8d4269c23c1dbfe7a1903edb1f14eea4a8d976443943378d9ff3f50149c3a68fd83859bb082f00246ad8476b49e3908f27e9f0cd3750362f85089ed027be9d6537cdb3586c555328266451ee75a4d7bc6366da5f4b8d39d89076beee3230b3d78a535de82fc8dc83c2e60c645fdb5a1dce1d923f1cc1e6546b24380a13bea5aae7d68737461172d4bca2ddcd6762c8942e2342b03ef4f44b39b2545470d26f808bb64b36636f9b4354427d861ce712f6a35b240f00aa170b1dc3026b65c644ea335d41b0166ece634079fb7f756f2e529f5db01409817e1e60bfe7607008a91b8768b97927c40d358dc0cf875a96808cf2550bc37759f3b4db6010d67a910dc72f2007f24b4ad424b08578b74ef8c4f6407453c513936d1fa491aa782be4b01ece96b67a7073bf587f18ec0e1fc49a2cdbf8e8111b2d25634d18b1465fa4076bca687a1a404b86ceb5fb46fa7f7c3f672bd753230461fc5e8eacd3a73f79f8dc118144b74980136f8ee5a3df19d41c36a7e78dc9092c702b64d8a9ed1d2f0d3c026ae8fe3f0a4e543c1c6ae041e4bb466f6300a7063e1919efe7ad8f290073430c201d7c421a76b135e206263f90ea811d637dba2e9acabf7cfd11d8492281c256d92bde3ac0fc75264e221638f3da7fd22fac8d7e47ea59152307c0099e67136143d06544374421a00c1f8278b386882292061a750cbcf1112e37e8463b6c88e60eb4f423743a9aea8aec7228991e9e63816189684d9e6d00c277726ed3979b60686496019265ad576b2fea072f1a790f9885c5620b0f668fb80b9e0239d342dd782c6e3477620919f01f2c1e4d99d0230f7df84dd2385659fd064861fc4f70c08e378002ac4487fb8edf5329c37abce1c4840c45250bf4c029eac87e5594eabf6f135315e63187350a02410d1ad3e2883cd6d97fa34a1a66d4bfd46a0e05a7faf493ba28cdd2fa93fdd73b2237185aa9f8bfbe2a91959d46d2461627a4e2bdf056c4fe5173f4459524ba7d34f1076312e6829d4e487c8c893000fb78452dc9206bd48771e5f7c9fb86d7f94bed2ec82556d6f120466ea8d938742072f9cd51f6f05dc81c80f1f8dd4b98d51f76d79d0237d5216ec4572503d352c65a173cf45428ef3c7199535a9a22ec2b539a896460d71e3b22541c44b77c340f2eb852f5888d294865150e9b8a30bc90272cd19c5db62631367816000cab84f465bdd3ad8a1e4c1f6fbe00b4367d4e0d10ac6c8baa97b277217bd4ff5bd6abef66fdfe31a3f1faf678f10c9eb572fab829f710a0c106b6316eb430f90db384b913f0b1c680e396e04d8aed4674eb3e507fe529ad19b34e934c30a0eec001e8c56cae755adb3ec6f360315238196fbd830c8179f2dd32d2c75f1f79b18384a04f71b3b3c776e375401d364de8611579dc1223fb3e87f5e83a7fc345433aea90247004c767bcf50c2809ba10137fbb28755a6361587f2029986511b8c5d64784f7398da6a2b1eddfe330dcb7331a2b453c6430172877c85ab02d9f3332512e00ae36e8260dea7a3c927b7e285bd85cb390560bd6f9a05391fd1756cf11baac9102239996cdfbc8ae150c85acf5f0b68889135e24a3fb05b0765629f641494d4d281226373fc6e5958d46ec061ca79b0d6020592417d135fd2949f4dcdb4010a0a5377c1de91138b0060db3ea0fff94cfba1b6adf5c8d9b05b728f20a463d8e31a84b61e423b8f6725856e3f57ce0f2d72124de3f541003cc2d7665c00242f6449c7e42c49eafab012423c94c906f7d67e519e9221bce86b94e2d13991eb7759b4d2692fb9e2e3972781f9c8827b0a3630b33a61c2b19606a047776709d11e36dad2cff69dd82c8b6e0765603cd026e6175517214a26d399879030017b8c8d4663c2e25044ec67a76955cfda1c35c9d02082819117b07f0e49a68e3e082b2fd18a143c1042396ec50280482ba90682ae39a02e01e1e1a1dbce1406ae6a95bf9485a1642061ca2269f156a3a8088aa740292004780931b36bb607c199bfe2d057b0236ea5954cfffc3d74108b4e09c3337cb68ad575e862389b301996677755f179b4182ad40e4523cff0a58d524ea9bfdb01dcf96d95cd98859730c5667663a4ca020b1dee11e884f4570a8acd0b29b379a64b75945f5f1f81b0af94c0e575b99bb5b8abbc542e46e6b1f25b54bd24858272abb021d94929511483d28e72ba263330e108bd8208ea77f253a9b2fc452b63d528dc764a683d9360ba97d04bb863f7c7716a53d437ff863637ebda6099ab20a78166a489538256e3556ccc90bac3bac051fb8aeac79fad27ad438d63accd28f5c877dd1f18812af3bed8d67b33d90f04212a1285261b7f2103ec36a70fca80227a4d96cd5f362720d087398066286b86528194c6efbe1bd3e911ed1b483dfc8438b3f5717fdc63674ebcaa52baf078d3c7ccf9915f470233de4d29aeeccd86f18c5236f5d212f9d104fc082303c918f68ac0d39b445b24e191d1a342b2c47a73bc7420f2c8914a14b328865b5f3537a74620242be9fbbd311d5554107fb72e46868bdf67ea1bbf26894127d43b367d937a1bfca2905e89c0a9001a8cc2c66af40a5fd1eb04af8161cf5ab53b13816c43cd08798c457449d515a01ee9f13253c2d623ce7b0858a8158aaad345995ead158c6e4fba5ceebe9179b6f0a4be7b5301a187feb8a018a3e46053f6d0479f6e744d346d92f2a965f7753d04bf595cd3f0c83e68eeb2aa3a53ba5b59f8f7de49d6e584f1f2d8f5f457e1f7336313e49b038ff61819268fc1a2fa09e8974f7d0f96fce22b31b1392641d2b0ccbb66d74fc5cfc9970e39df4fa5396b031d21646894e8638019e0233b46ec59f675c3063c22ca12d6f9040dd0c27295fb2c4c336341a827d3ca6759a5e381bfe56c3a3a97b3312fbcf162907f262462876a381f0aa03d382d9b3261cb606ce3775428649832edce5b2c8671df1766f9fec9e1001b90b57a510de2f38f32d4e291a9e83cb1670ada4c79b3de29c0e8db0bb78cfe70a337e6a992b59615d5cf28516913890f95b7884b54b36aab674f6feae818384a236cdb2dfe6ce15e90dfedb554734f429036458b6eeff0157022c55c71c7912970d4af7f824b5bb3e2101cc6f81b9afb45b2e604f758a14291f4acd79f75c09fc15b6b7d1a80ab217561994ec3392d54824f6ddb5259ef36836ced86e8335367d0b377bc88e7ea3991f8859a30ad709721fe96112c641de4c56210776e3209a8c1cea1f96f261285c668a2b5308688df227b572662cdc48351438e09188d34900133278de478c7f4112bd79506c3155bf6ceab1d152cb9fbf5f167ed5be451ac62d2c663be16c3ab433b578e95699a1461ddfda61de8751b86d4780cef2567c335db322979890a0d8249bfbf9bb76ea0747c5f29d207ca4b526afce9aeb6bc2dc37468c09bb39dfad7fb486438c58fcf65c867948b6e6ac260f6d71475f3bc390271fc176e9e04b0e5ba01cd303e7417e4d28c28e1af56ce10db31829ab260dba77186b6e97860d7c2d87a315c9d922272bf2f9377835763174a38336c722623552d74a1a53b015d4353ebc92525717342abfab61dfbbcc52729ee3f402d6b40b1528980d71f82b842225013a79e3df1d45489e78323cebf20b09570f6cf529f30c39578610da5adc14d07b45456e26707d023a4a752d3d511275e6975ee3e7d24e0cb94dc599d1df5d7b8c01b73037791e196e954421812005fa8b793e0ec408494f943ab4d9abe32fa5120f45c0f6bd3e6d784575528e2c73db52c0254b1d6b497c47fa3b8dd1083b51c49e0f72da4404ce3bd1957e93f722c2adda86eabee33d7e58c107f0f8cb3e8081238def1d004a98c4f387ee01c70ec1e3851f087daf0f58246fe6e6c2ec296f9215fd6f693321af25ee26ca5c4e7f20d0450d72ac3603d213e5138de6312b2735087fe93b8158af64ce2e6cd5da04d6ef06b708f99c3c5b122b5c841f936a57194eff64cd681bb112a2f221f7690339e1e97dede834212fbadc28efdb2b6f309c7b7adb2596077815f909a856e55385d0dd5dcae9823fb2902e560ec0d42a19cc3c7a8310d75f77f104d8ef2a787ba12fa41efecea4451b3b2c6b54ed164740cef0dc196ad06aa93cd4bbee5a2f78e94d09c19b0cd717718295be3d43b365f9b368dfc5639d0a00f1893e0616a840f34c7cf91cab544da6086a96d5112d1310c53cc50db04d7a4f013e7369eae15ada54caf0c6b9485c08b586cdcd33e011c3762d40dae2324302fd56e4931e1c43260fbc80473c4c568320323cc9e4b77c1faf500c435e7f082286f2c40f2df0179942f4ddf0605878d7283c05ea90f21c47d9c6e3cd0f007b8fc55ec04a88464fefb65c780f25744158d8361a217a1e4d790f0ae9f4d3e57643796cb5be18c25f708cf4a0ec6b2c6bb1f7730a261aa609e3ab463b7e5c5b1b2f1a45776dd5ff3e16d7ab95857d601ac589c803a025b05de08a6695a0022233e81072d226b5fe78f7b220fec63b8e60f59e00f8daa143096be757f73c95df18fadeae740b8ef40f8c4ffa5245ae235b05fa76c0fde5f146cd68673e5d063b736fc7075b16fc9465550e9375590e3c44c5fcf3421e1e1b141298585dd94a4d7b1586e47ea6c845079aefe9f487996024a5ac796013f8554f530c9151ab0ec00bc01889e0f3baea03481423f1f7f06379c8ccfe7a3c51711b3294d2b35a96b274d221cc90f080ce5f688257d8e3b9b963a91819770c3b4712775aed777361a2213a673ce7420b964702611c4057b600144f355c72af2a810c6adf1a959256eb35db87eeb4095f5a4b529f8a54e1f9442c5c02293e042f710f19cf829c0efe4b584c521bdea4b41e11dc1121109f2d2a706512c670d352cf5517dfcdd9e2f65a50ebe3a0341423d10fdec49c0cf19e9047060dc903c7247a0583c6f58482f8f41bb7d125bb8cf65b76e4d5910eb5c2634a90eb2c2ad3a9763a6a9bb7da19569219307e3c3d3bb42c0eb253e89cb689bb3f9e550c683436b760b8a0ae0ec07ea23a68ab3e34ffa18644173bdb269113f01f2088c23cb6d61a06c7dcf5dc623acf2ff6220562c7ef3e3edc51806f12def15b517111c743997b6e9037fadb9662a7520a0b1cb41853e70fc7011707568a1917eb998bf12908ec5ca896f3ffea1ad53e072d85e1055a8b5ca7df71bb4e7d3a061ee3c530ee987b130887a450b919061e2aa900d7fbc7ee4426e8980879a7ab242e06e2321ffad26e4e8d16730124e93f1b701b0782eefd1a2ff5aa28ce7c7360dc807fbffb383e237d6f896db07b430101a611f6735c5d1c03fc6015a4fb3d2ee549687f5bd5bc1ecd0874ed9b70964db3a82a748d6ad337de9bc3f89953c8775348ac061c3da32b170cd795188f7e6c6513c84c26b2bc4f1c9f5df699b4b821d0ec9a53c390300f4d565e81923e1f4e1d575dac1c159d5f8b5ce97ce0ac9135c5f8660429d1302ae2b8997c103de25b4154ec0fed9bc21a89f9c767a7b42f06e893bc9ad81a244ad9cd712b51e68f4e877242cb665edd29c9b371dd66682d2d776d9b5b0683cc2630a1e8ba0ced6b5c6978ed19f7fb6d76496d9c7473fe4e7061bc5d407d14ab02a61c9bc576221c49e1318c1184ecc972dc12a4732040992e10a7a6b070d4217e23f0bf139632ed6b7619ab5a75a00a74f4eb656a7037e2657c922ae23732454a540a3574abdc080d0110fd06943eb84fb11aa35c3a8cee5bd2259604080b345760f6076b6a95c816e4576a603adcd0444a79301c8fe91020f99147d1730d160cbbab5861c9b31a471d45c06e09b169510b24467124e83748a117c62b5681d64728f6c74ec6a4e75b1d5e970ed90b69255d15d3556a7be327e9222ff2ddf30e7aadd44ea7cfabf063893f362a6600716a525f7793abd44d5cdbee37e8d3da38106e12bbae5a11f54edc9034d4bb463e17503b5f828485302786f181bee3d9376377469778bc1fc46455c56f3b0821176c4fdf6667844974181e6bcab46c4bce4ac8974c02ddb7d36fff3c28b60b93cf64d9156f0473cfde2ed27f5a505410f809f72403a06d194a064e2a98b7df41f3759b65da56dcc9d768777ad45d1124c310bce041186fd0093fcb68519d68950d1473cfb5ee36a12d2db465e8171158e72999780401ff24fa6c88e9d0e1d9b2465df1909af5170ed124507b04ef910b154ed5497f1c17bab51399236fd877f9af4cbf620f6e8a045460486622fc3511626c00e149ddcd9c8b37db875bf39ff9ad573547d0d103593c2f0ce02c4f67472177c103d795b0d27f22d7d79302a860c04eb9ca317ce13370591e78e9adc9da9f22572ccd63dde85807c7f2a8dbec3fd86ca27a0832789e58716e8288c8162ea603c88ea62ad1dbd35e233843d4dc4c465d50554e43e3d29a472ba409a4a06f0f67b35aeca2665264395855a94f1dd3b146361ae693821519652aed5675e478fe4cd723df7ea05b0901f014ea8d284b2a580e3c927976841b62c07934ab5725e12fac0ad9be4dcf196ddd185d91d573c27418ae67a7e584d552f78240d9d8a256160be5c6cdda175a3e24249d5e26898d4bb7bf93a8bd3949273587b6d010f3467e6f7387efacf59a00552984c0e6762b7e108c909836ffd42f9d9f9853608a2d3021e00f4cfe62613eda6cab6b4b77bf415c37e09c83dfb46db849acf2a2b96035fd54e2c786787c52d5ae4136ac971c13a02507d7566f5300957d94b5b56e9b200c76679f5987c81d4471372a62823f4f9b3fad824e77206ba8e25d030c320743b59dbcdd004493195dea92e437289e13c2bbaf0be3e1917c96d3463ce4cb2a76797a75c4c5614f202c3820c7f6fb5d308270415182fc5f68d2c6b9d202a8cb6d41e495434c25b1230bd0371c015872647516bd550c7bf97526226a73e4dedc2afc71f8246f5f835bbf1d46b1c4426778abaab7e699de8544de0a1d2abb3e3f2cf40c208f604ef42a99191429c1aa391d450de0716a3c3b2508c3b99abea75f7fde1abdb722d717069ee24c80ca5b8277453b6fc81eb1962f49459824078fe90dba9507dc68f13f1cdc192d781045a552c0be2006e8d8622c7c719023c00c002e35a539caab59f0357b8ced05831e1f03a14564486ee3256df7335ff6601b5b171b5b446b0bdaa666ceeb8b5beb5da8656f6b3bf98eb663507f343d204618696917fb15d7254b08396101857ca8367d54243a9a33a8aa5963070c14c0e7385219aa0a8c198d7f74458b8aa46fc31f07494a17bb7e4c62ed3e5478d01837485128ae6bd29da963c75cb0dfbf334fc9271705cb09fff4d1660df8cac514af5b0e43397cc0574d6a9f5321e730925c46111d6118ec94c0adcb22fb3b5b20614d520aee026ccb8a7e6564d54921f35f2c4f4d47588a38b75dfb1947e35288c5c0b46e3a3b805eb3dca71e4d77408874273c3114f225f63de5ac70f9acec922f12d66bff902d9aacae002200567ad0627b7220a72074d29bbe30548f106506ef15ef3a5f2b78fbaa28213df348f6e66bdb0d7e3accea0e9d03cf42c28229bd1307121599c0d0720c91352fbf4d20ac37b5164cfe1933dcd51f6262fcba3a27fe642a05a6f480d4537f7434ffe53214db83860b6dddbff9d3363f795e6e7751570d3159241b07423541f97ea5ffddf0ec4e8677352fba21a430316e4af8881af8dd220eb5d8f1c07b43d52be44154d4594f8c0e1800e2d8adf04a0d156672d136ec897dde14c3eca339030e5a8f3d63dc5c1565859702f7fa4a605bdc002a1d49589e2fccd2b26d1379b221fdd3313c2eadea728427b361156e7d6cb36810a20fe5c44e2e6d970aaaa752014923fa2618232d2eea485e8ef400ba5caab9de8476aace170ee36a9b45f41c23d6b1aa3969a38470c51e73a7bcacbd2db43bb46386d6786155e31734b991e8219b7e46bdaa7f0c4ec2b0b66ae1892b44a0974f81a980aa013a498f4cbbb929560795433af37ad7324803a1d6200d7f210f5c94214267781b2dbb080cf1a6f508799f9bb3b90eae1b917e3752dd7fdd2cca6d5b184d4b986ef2a1f1c88d34be5ef166b04056cc2500ae78b2c09ecbf953dedc42834bdcba3b380ac0171de68d3ac269bbbbcfe27c696ca4393902a6f227e013f8b3f3f21d37ea77fd340f3d83405aabf0ef15f43d6de9679080bfdc3c7fbfed9be3da305c5fc1704e8aa8be186b1a65c3213299e414d78acb8c619c7838b37d7422a19f6576f8b04f79bd38e959800364db60a24d260886ba64fbe9c15ee987d62b49f6c97b01b2d67db594a80e8cdbf29afeac67112f4e191be5017a0e110f6fca9e42f075c71624ec873523622fc8d81ff6265f3ce03b0404235169012ee46ca625dd6f31cc686115d05499648e8413e3d7a4e73770acea623deb527453dd405d3782c30cc8f5ac713bb594332a978861c279d676fe353779f20df348462a3d0cecc3d210b8dfe31d088a044618b78dd574b3372607ca5a6cb93cff4502642c10778747116998a9e395b86e78c6829ec480e12c6e0ce8eb49e2c1367cdf9e1f6cb614be708f84c0f2a3e5444f5be1a5379d3bc41d929a1d607390f4579ed3fc0866fe3d4ec42e34fc2039cb275d6312fee400215cd901fe50321ee32078188f76e14db5591ef3736f06c8fc349abbfbf082098c63b29fe268fc8e805a4b148308a9544556e693e2288c6e9c1105c9b67722f29d6e75d3d87ed0e2a95374cd24f244f48b458b5af611d99b2820c30c923abb0883588aeb8382d33cd9373d36b4be4aaacc113e70017de9af48275548be238b1bf16bb63384d087f2e74d7e40b0f0af189418c17f03b5f8f99038cc5427e405033c224448747e2e9c9830584efea8ff57773db3a5e30b1ea764435cb46224e633ac7afc7153985ce9165de8ccf1b807c7c8752415cea0dfcefc63e33021793a744a245f7b5b8f55ef656345bfdcad4953c36a1413b804fdb2a62d8a108472f57068737e32e97cdca834334f94a3e00eb1e637f48b8c4d2d4e21542ad1e6998c27a74b29502f1769468d6adf84539255863c262a4d7d69e31b4634abc2595170313f27ed57085ee1fda03be708d44e5d4b564ff3f390c055c197439763c22ba0dedb103b8480527065f82d54bdb013106b6d08e857bc9c3dff825111b30abb403324072ec48ae1cca8c057ecbd6d981183332b0a46bcb7ddc12d3afa2d9cdc904c92209aa8e64ce18c3c3f689a4f806d15bf7380203a7810241a110e3b1761f31c38612c4cfe699de74a697e04b1bd8e52330f12f0a34f78f4cf423c08a5e35c62cd4c62eeacba142811676aa4f615d6d89f6092d8b1fc87161720e4bf5a5973d23920d2fe1f7cfeee2416df3ce5d3feb96c646944753413c9d378fb3329aa31480c676ad6e7d4f71b5f5c4b65243c0315e02a52f5f02e5d050c642e677e343b851a27484d6828d2986c4d1be717515b688a0fecab02d8c6c53b65377d5a6f62d5de39b6020b495348a745775cb7bbe3a23f680e71b8707dbe9f7deffca0b00d235044f72263a7a2be443553474f237cf6496bc20e9d0fe2914309648e5b57a7f73752f38d4cf9fa19f4344a123c3af13d061bbaf38de33ea0d866df5a0b31199bdc4a815dcf1155b08e561a69c4d05508175e6b89ee657be56f524b19e55ff23de55035f1bb4f0d17716b7f1b372b24f7ef28be533a705388306633dd39c334d19b584e159a634cc75154e87c1c68e36589522bbca29e0374fd42dedee3d02252c950487085c56dad8a7aa58e88d76bc882679a73110e8bc5a43c12dc402aab21766b4d334eac15b03f28481dfa74eb25d615a484c951bf453b0e15c1b3906c5fcf3906f4249f162f7d4a4cc5389134d0af38b35686275825ab08f83f9753fdaebb58ed346ff70036fe2c011304f90caada44ef8522e926581e2aa12d9756c6d14862f7208197bf58c71654b2264421b2fb4d65524182d1a57f6b164457d39fa8662d5b67ef2c2b71046abe0c3ed97e624b52d71a44e6ec35cc6407fa554613b3e5269a8bcc18f37f6b356ac40e2eb4faea08f8509815f4ee800729317d03b742e965933de1c8fef6ff316b0a721f4abb970d98b564537e5a7c013a815795dadc3e7ef7f108255c4f8672f0d068f9e2f54908d3d303be0033266ea3ecb0d0587b151d6f959b9db110dc1b1a0839dc866ed56bdda843176db1861af0e12fe9fa15b63a5b2a1efd3c9c1861364ff60a3db0137a8166f61d89cc6b6d4037e887cefc0867aa316531802651590f5b3bb2a571a054e549c8e06a50587dd4782b2fbd856f522508a4a63d82494779bf1dea0d94b705ca8d0b6082dfc27502fcbc61acb13f51d01c4801987bbb3b7e6c17ee27a9a63a225528343814fc4fd1cf638ea813d44020e9be8dbf8b3c7be7a0832c64cc1453b30373b46951de34ca4062a2f1a7fe6b692832c114e6846918ac4d9891cfeb04bb1041ac8689a972c8f2c27f289a8940a117948cffd567337f0acd169e76c505545ee7e16552e40e2d5b75f956fb6d7eddf30986c5a1fa1aa80d2b9156c0103fb7c82acab3a7da4fcd79a05c9f91227a794b3aab6d3f4009580138582653b86d4a36418ed1a3cb7c32a646b4fe628539d159f65e05445308f8cc8d4e907ed620320da7d6d2b14b1b17b6dd1486f407098401d77fb6e98d70839919f3f6a4f31e0eda474f663f8203c583ca8fa657694881365f1c37e94c30d5d06ce311d82772032bf346d81e0e1daeb3e268bfe46f04a04b725d26e47e2adfe4218d4082b75676bf88863d42c52fe0bdde959dae610f9f987ca2b57a671e5236d943c064a22c04742180930abd5c86427d6805e98d7145302cd8fe5a0c05596ad8741c09ef439ff56ed7721e836c25e0e38c0300e73c3db40170c735d25e812727293149407cadc5f804a79b1b2653404de18880fd5952153868077f7b2bc7cd589946ac9e6e205fdf3d08e29528d0281d87e8f1d500d63128e3ef288b2c41233dd94381e000dfbb01e85f3a6234ab6098de61f443475ea73ceb7b4580072c4c041a5a441b50f7e156d310135f11945c8e4fc06a8d35668437eabdcb7c673c041c828d7a425ef90a51f2e2ae6507d7d7ccd13495c955d6651607815f7878fe92413d75f85522d69c9ec6f52372492171f21c6bc3f0464273eced69e4e806ac58ab1de790a75d1790ab7b6bbbdb72b1eca8bd17ab512f85acfb9691fc700364797f07f7e62d7ddcfeadd99f5244616fe00e92339562005ac34d839258875deb5aa0f6b89e017f2c7511d73c6d8529c398d4f96348fa04c847a728eb4b756fc07bf513b472fb6cb2d60c3efb1a3d5c83d9cba07113141a9f699d3899ffb67deed877773524b941439a190146dfbf33490ef2842f00f635372b5dcca94c9a113ad52a328c4e402e9d39eb28745153202c5efb37b025dc333f019a10ba360d57f5625fd05cde0a69b0de1809ea313f1b27c25eb4ae9c9f604fa18f7117ae17662c931ed6b1247c096964e88e3de61e70bf4ac7836a3efa58c3ff1efe6d7c815ff57e357d5015cd4cc197e2ed7ad26267841f3062759ad1697288664ebd84891ae64784bc1c9cc0568385bcfddf182c6a9e797e73521c2a6fb060f43851817045de02f8ccb15ab4185fdadff0ded48a74b4d1ec3603fd6c371e140cbba7870501eb89241def06e307d168eb88c2c66e24d67fed226da7481e95c1eac56670c029d6dddc67f8a86351ede4659b11e4741c8330e5279ae3936cd242872e1c1da161583da2605d29e32d1d9b0f520ce3304e4ccd489755e7c30d4a703a3a30916e30bdfc0db0782a86584eb70bffd3415f498d291eb02af6f43ffe4fe91310570275d3206aef297f2a76ad5e1af20c3d1e08ef0f51f98c41fa3af8325137eb66965bbb81d2f4ab4f720cac6bfb3324fdcd3b6b6319dc46693a46c97a54051ab5a1797b94257fcc4e010f0070ebe80a99b704a99791e06372345ead9abb706351997e4fc55795cab9bf190abc6baeb049626f34afc5854f88826770f64009835c6855990ada7bb3f3d33ee48d54e16ac33f7ec00d3cbc9a84f44eb9d79b35fb260642ee0a30cb382d9a38d0e300d1bf76b56a5644516633d9a321c9175e0a8bc5ea712d560890cb805173c38b3d0db20e78409365ff3e6429a81ac97d3f1817c7d12ce4a2f58323c3de1afa418b58382c293b60dbeda6add69b0e5e730d1f9c74430d1b457c0147f4c64d984c383573d9236cb33c904f9bd77c1ca721bc6f3493c269adbfd0205703e45b6dc3b89a51f9830b69e84d0b6477b27701ff67f8e89dd72a0fa2e333a944c34fa9cb44a16fe9915fa4c8054b45b605350c5920566bdd4430ed8e8caf1650615154624bd044ab191792f7624e5cdd903b58e7c0fc9ae5447a1175b5e15de2480a1fc707fd105eec3859393f3009c74574c093dbfbc017c77d93f8759dde2f00051c92d845719f6b49d6d1c92a1e62ab6042a62d0bb40b2671e6da27ae8e39505fda47333de0daa4612229056596e8401cd4c46e613f97a11c4a0b84967b0de97fa11a01818e138204d06acc70c1f2c14288384ccff8b4cf19b98c6e2a34cfa53c33397d845c53ad7bea8b0977c3247107d0ae7d6051fabe571a66fda7c89f7b5effddb5add54c2a1b4a6105b094a560409731ca83a2b0b132f200224952a40075fa43e362807d2b56928eaac3d17223505c2115305b7404642372c61f8a9d9a291e4322927c4a7402ecfd501f4c90323fe00506b9c66c7e05e8a166c2a466cd4e74172c391fc0971253ecbba2db1be86dc078c17a681f9c4d3be356251c4ea27a3001aa3564f81f206df40cb22821e103772c7ee2d7b7486b4d858bfce942d104b6be2c223ae22e4799e1e75c2b4f765bc55aaeefd0bfa217b6e97e167be3f64f3bee03960b403658a53ab50a3014c003f0d0c7716c1ecb756144d8246145c34adca96bf58a53b836aa82074bab67bb58458608afe6a5465f8a940a38c902af2f204b94c2b3d6eb0d8ca1cee34c0ff57b24357c2c17009537630b7f1f5ef0ff582d2894090381f46f9bfb2344d76313677579a3018023b8204aa2a158a83350630101c073929c4366154f1cae384ece4767722fa7f1bffa3aae03fe84ed8b6f291f07e306239c09593d457d79c683c0120d4fc4e8f41b3f6293dc8638f4cb9c4ff36e6d38f8bf2b2a4fa409f7ab0177621bd9538af58e753544057035954ab8726cb7810c1d04d73b92ed775d997768662961db46d9ed121666cc1e9537b0db4eb2fa358a60aaca359f8e59eb24aafb71f4347f55c62f4a4229332ebbfa039e2f8e6e4d0d541acd702c511bca82a768219dfc2526faa6a755241406e0d0dab60edc04768646f8c219bd4ef974388ae97ac67667b6c15f022fb018c41dc0c3f30872aaab56ed336a034e0272732d592744cc64ec9dd30a375f1e6d0bb195962e2d2358c976f0f715071e94fb3b2d89a257f080505bd65535678db48ca4c1e4661bcf60af2a6f4eab2a4fe57f3e0efb31581162a116e68a0432226103a483bac802fb17098e39ccc73f2c7b0cf1d6f65877e6e4945e425034435d7c4cd15250ae6a1d7c43f7f2a31f22d61ebd9e690af72c098c8a684e27454b4c4deab51998917c2976d359b260847605b735610dd3ad677579dadfda17b90937f8aba4b969083d73bf8b0dc861865707136d055ca6581ffb512a9373715740d122de464a1f426ec073ee4d47a09e12f483e7ed84be666ea08ca9673f75ca1be833c3597cbff327ab243a306a59996411c37908a7ba3a11bc6fe6d6c9aaad35c2f5c9859c08704d770e435f84360405dbf287fd102c3c5c922bea1359360f007704f260231e0018cc386d668824737b6ce0fcd622b02510cfdae8370d7c584000bc1780bc5c1d440e9136b6655c1a49609a5886c5c7223a9e0c5f513037a55c3e466b8efb371d139db1687219d79501469f83e5c984ad248ddde3cb5793ad2734988da37020a15115b161668063df3918f81d11abfa003a371850b404983607025853073a895c30d0afc82065ed9953263a2350f94de5710957c60590c5cb531896962649188b5faab11da43dde6049810371368b1af24b72e1fde3c256a00be37507ce56720a0dafc4a6473040342af77c86933701de3389e1b4671ba89c531012c1c7d792f30cf2801ab03fc68432542d14b92ff22b1e97d44574bea2f2062752361e7f6c536477865f4918d20b3c5d81ba48bc5683033ddf30034d7e4e508d1388ec8f66b23f7f86bc576d1dfa69207ee8c31855b52ecf33e0a03c50170bbd3a54e63dbd8f5b32928a81b3b78c5e2ca9fd28da9a273a875d1647444d67072cd21ce1243bf14e7a27614bb3d98a13a8ec8f95beadfd0032affa56e73f247649518332f5d7861eb071204d6eba0e055d2f8811ca860c0730caba221f0e68464cd794055cbc087f8c52bad032b49078600b064849ed533dbc84fed5e29b005e08da99464e14621938088578cc3cd57bc6bd7ed5eb4f705e7ba8b62842cc6327aee738a7e4b5d67392e07fae8d34f607a685f0dbe3d58d58cde13ba6cc715c795faf992bbb789d7c59d48f3c8dd18b66bfdad0d89420544377e8809e7bbd442016e1f09454370b25d599f37ee2fc922bd4b7c9956624c622004213d7a78a1502cfde1c46c79a5d5b0908350685ae2b650b00e55f8bfb475e1319be6de97c3b602dbc5886b3b67127c39e680fc5e5777eed79367511f0dc710e343b36602e54794496d9c956a4b1547141ddd69ba8db2c5ec0a49c4c4e8e3ddfe693e8f2a7886cb611aca340be2a48381d19ac314df264590e9521d3f0c609f8641690ee369d18cb4a8cac547f6d5f955cd46a673b6f2d2707beffc356bf59294a655a2b44c8007fff1d183eb9f026a235b730c4307132d4436ae6779e55748b33830a1a12342525d4ea671d56ee1f071aa27260706b0727cd7818251d761e5591a3723dfa4071019156991ad94f2acd75116dbf372a046074cd1874b2b5075dcb128bb37ce20dd93173f2c60522001da34aaf0c095f1d679e11c92c28fc4cb9a20819142421519304948dc4383e5a51cdfbd16705fb54940bdbea94e61f4eccd9c6db02f7130782f91b0874d1582ea14988a0d3d41b4ca6b3ad1fff0be57a23e3599efe1a5d4820fcb091150d1f659bf5b6b5a180840841867d495bcdf87613a1e49178ba2f45a8d180d62389364c2dec7cf5aacf265c5e505c789c13ed13f627a5b7f1b1dd1e3a8fa38dfea4d335443689b8b611df1dc74132275eb6a945bf94e1fce37f5a7bf0a243e5d466a1032491bcd29ca5c91cb87781cc1cfb820fc61631953c28ae3c24f256a7aa3b0e6060d0fd33052957645efdb45b0027970ae1cbe142caf43804e27faeaa4e22717c97dfd3120749eb0f6e95f339dc0a3d4b779e7789e3afd46b99f91684d702b37f91ce3bdfab7afd68e0d1b05fe872e027426220ed99fb5f19f59785f1cc99c7704973a80ece5e9f0f9de0aa11fe75832519efc73a22a1196a92de16ec0af363799a21a95b1aeff61bc2118a7aa571186ae654f6449ffe6c158d129fad748b19577e3077ddcb270b28f9abfd342b940f02097ff84903e026644a6b17d2715c7037f733f8d6e9f53542b632b40bfec81621de5e5c0b6d30ab5d58dc27373ede9a55e4cbd3a073191414b6496d2fd4e4997e54f5b0d0b97ba42821aad13ae3927f6a0094dad9ff6b67786e5ab1c5ad62696ad035cf6f29ceb43f1b9e112c9d6503337454145be4080b681684622dc19c8f42def1c2e1b1d5b9014038d64e25cd1a575882e0de29515a1ebd642303027778316ca3884281789c1df01aa6574161246b3cbb48c8efe18230b41f61e90743fb48b007e28244d8d52f20fdee0fab02dc5a40b73fbdbf4121752057f6a0da862453e0a1f7b6bb584f64e518e8edd091dc4f4307aa4f033d880d295762ece1345559debd0fb3056ce96707a3a3d8290e45717ba7e3e13074571ed7fa729b099d7d4ec38e0f12812849500feeb79f654f1c379cd3713a517328699a0e76ff207b8f69d9ab6447e2a80c52a36d2dbd42484725e955c723f1485f4f9a5a546f60b68e7583df3a45142baa0c3ae122415e195351c850e97642b25a6e4b14e13dfd7cb3132047c59cf1feee1400d35cd36aa1ae7ff8fc58ef33e8cd2f7b346fd7f317f64a6ac99e5a2010bc3a3ffd77160f2dd9556561450024c4e038866ade4271e8df1724ed975ffdaba018c0e2d1cfa01cc056f33b8e6d2d09da59179a1f7411005456e19f0cdd6986a711fea23ff96a502769aa874f365a71e919ecc2b79d74d3f9408e7bb13f289ec0781d5f9075361f10398d4935764fe104538926f0a6cf099d2e9c806bee9ee7400bc8d753b9015e4f324e82efd5617d0e6f80fb36b07098b813c26111b68affd87476bfc2d9ca41aa178bdc0bae068c701e72fc6f9a1ef17b6090677c636f06bc4c5c6460a1bb34a43da54e3a4da466194fd22f28876e73937cbb9eb59c3ab9587c21be52a12cce623ca7cdbf92d337fb0a7e34ca60d0bb4431f9dc5d59ea4177130a41929c4744845f6f9a205f4cff577ba3aa1e05eff7ab240483a95070085217bb2c64ea3668ad3db929ce6bdba37d0785e2fc945f7c0200eeb699c49a33ef65b7f75bdf6493ba0b585b4cc52840485802b0cc8d0bbdb83d2a63fd7fcfe9a213e7cc4c1bb7615d179e08edbac9c8292d010d3d15989ea675af9909c8903adb41fd5facf48d63106053b4f003d0fd7461c5307f22d947547b8d3d35af95d95728e42eb828741dba61032297b37155b953f395fd9f4447974af5ce98b0d29e352c0c181fa1454cec1c151fda0420f8131df789a12bd6f76c63986d33a5850a8f64129558a7c9e7f259561f75da926cd604bb7ba85b40600302868309d71846970a7089e94aae4419106ab82b487e6d2f04bbc715f69eccdc7268a4d2b20e368d62b67f6a09838c550095b8f28734bb8418550593e05b8da95c53884eace933e033d537000127c7782f72148b57be63a653df46a1f65d52f844d739a3f425fe1560d8bf5d6bbb86401b823dad8fe6ffe44930a28c2fd5d7907c3ebbd8616b6d54712aeb2e7ec0120f6686bd7320a5685d291fedc58372e58b00d11f5588a05e791518c39a042f997741b2f2b6924bb0212a5daf7f5832d7e310772faca1bd86c528435e37690362587a7783d17f2ff9b57d417f2af0df20e211a8aa7c5e4518ff37b9ded6a9e88a2d055604ceb6a9623f71e42a5f3d5bd5482385d9ef5220483f5d8599c651230b953354cf6525aed398091612bc9087c36c7228f9250e9bdae460bcd3c5bcd66f6b0fbf93912b3a6ed14f42e5683205cfe5470738292ae6869878ec0569db0edb327a7dcbd0f43140376a358b324a8e4da41312824962babed645d5f6e8bf2853a265b3eeb0d1a0da794671945f71b8e20639ab7ded90259534410b7436d7d6086d77d2670283018a4b13fb90d24e1e48fe0ef0af15ab6512401dba6ec62ca3a1706727e79f50e083371f32d98bb567835f528dba17d90c3eee4028e4c992c31f706200c78afa18b1116c79f57a8b868bb6361073b95eb9497364d6e029fbb9a45b1196d6495f079ac53ecc845102b87ac763d26c7cb099ee5749add9dbc878ea4d2b6597dda22beac1553af72a3d9b761c50a98dce26200bab5881ff4ed240023a1ecada63df63dbc717ab27e9911895e523f62c7105b8734c71bec9dcd5c76c693642f38b3eecc21332c7b6d148f53c7116e572c86c733fd73dd92bdd66010daf1791204f2409a63734183ecb6e4594677f59c5f055a3fdc27ecbc865c1e4ad312c9a1726e9736adf7456037a4df4b97d443da1403901fa4571e3cd594140754f6b0d9fd42d6e7e0b3d5a9a545988ef8d11b5de01791195d16ba467f959ef61cb1fb30e4054e44fd545ae7e939c4e9ef90cc1b70ae18836825d8fbf2e29879ad3439a8c5a8651c6d304b547cc9302351c046fed993757ea97156f621d5b8100321255b0fc3dbb8d4506e5062c4169ee5b595cd54465fe6413500abbe71156877d4beb45164dcea53f04cc60acae42aa537f07c4b7574498110f6453ccff5acb506b84782caf05a92749953f989eb8640e609997e8e4c02a707baad94edd8dc0a06750e8cd4428fc7a5d6291127cce503737622d67c2e36cab59f74efad4a5b64456df00eda031538964e275b8aec313b605ee79849fa7227c1c3d733c77f74e03534cbc9dce6297054bb7cba55924591c1b680b1ad3cd5a514383d0dda58f005b31780c610676e7a35773385573c8d5411c582010eb343086580de04b92b960bb4928d7d231ba23924faf714606b0c40b52713e024fefb8995693b9f9969c109d1283f3655f578d28348fc13cc3e980a72e1562fc079df4c76ec1843b8be3d71440f1a67c42a054051cea313ed1842a92136127aaff0da4af712cf621dcc8b41766d67db490fceacf686818f1ce3299f268f1282abb2d15334c0af591688a1e1b6149a4a701de230f4bf6126626967ea46efb46310e202c6c15b10186075866de49fe9017d740f4473118dec41bae0cb67865ff9b2fafd67d1c3891b2e0aa16a45d104fdbd96984500f8d63f64168516742480193a7fdf2062cf1cbf02d59d82401c699d50217701e16b0545eb320c44b18d79068567c039f025707cb35747e694bc10af8fed996a646e156a9aeae45b349160904e9417b7d3dfad2ab0fa5e9a130eb13f215cb4c3f40ea21762559f1531055814c7e83538c3b77c9faf815685e084a873c64ac628163b8bb2c9c0e5c6808806445dc62dc526887b68d94473755527f808f1ed248434903afc7c727ef2d2b310378b12382a66dcc2c159c10e9547f9a26e3701378243821fbdf12a31a8f698a61c64aaf07760226de1500a220a5195b47624dd39e3f47de3f8f27a393ca1abd7e13af220acf5e9ce696f28e25db41a1f86deb7ddd3c14de80d61069615a46a92f44240cf5f6507904eab93432d546634e86aa26de9d6645d7715c1f20383b74b0644195ffb168b23a0b7cce0922024ffc229ab5888a1a08a08da9cbc45b76203af2d7cc7c3a18d12a721cf079f072f17bf4f8df75a502f161f4b4d2f0465274e860982e3d4264ed522d5228e401136fd349b1a5ab64307c89a60f429daa106c27469f4ce79f4cc76f1bce5d08d40c60e023a63af8f8377ccfeb481bad594e58e219fe629e39568d6987eb38cc7272b59ab0617903d573300f237dfb573119ea33d9bfdd2c9102e585e62e8ff30150a2866b7f02072b5b4873d18d3e49ad35c7912a945acdaf1f2cb246ffea04032211742082c3b01b1c077d0650fd1f402fcee498023792092a29b3544bb1d5ba4290518235d6d48d7853b8732238a1de4bf37632056c00eb7e6bf5590f5bd06b223749c0ac9c0a585e8def5081e0190e78d609583ba3b4d66f3c00a0cb2d9dd37db2afa57d9d751802316f6ca4ae93a17c04d13a52772f7f14e1cf8f649573cf0fe52d30ce8c6f254a235b6d12207a1d56a1dc310028d90a1ed245a192fb82675b3e7b89dcc36f096cadef301cc26cf365 diff --git a/Assets/Prefabs/BasePrefabsCollection.asset b/Assets/Prefabs/BasePrefabsCollection.asset index 7a89f637..58d56984 100644 --- a/Assets/Prefabs/BasePrefabsCollection.asset +++ b/Assets/Prefabs/BasePrefabsCollection.asset @@ -77,6 +77,8 @@ MonoBehaviour: type: 3} inputField: {fileID: 2642348292953561022, guid: 94ed5dfb5df8c408faa267d2915aaeeb, type: 3} + vector2InputField: {fileID: 8936320662031972394, guid: a6abc70beebfa934a9c5ef5b2b8ec115, + type: 3} vector3InputField: {fileID: 8936320662031972394, guid: 9e72408c17dfe4740b0e9060d6b3fafa, type: 3} parameterText: {fileID: 2642348292953561022, guid: 4b0098f7176cb49d6ac968b7d3ca4c51, diff --git a/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab b/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab new file mode 100644 index 00000000..f042aee0 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab @@ -0,0 +1,1248 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &398793150947721882 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 569625742320642989} + - component: {fileID: 8816247129259985422} + - component: {fileID: 1006677740166385603} + - component: {fileID: 564764156102873551} + m_Layer: 5 + m_Name: InputFieldX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &569625742320642989 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398793150947721882} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8775446268706734076} + m_Father: {fileID: 8691581922048536374} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -150, y: -10} + m_SizeDelta: {x: 125, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8816247129259985422 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398793150947721882} + m_CullTransparentMesh: 1 +--- !u!114 &1006677740166385603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398793150947721882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &564764156102873551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398793150947721882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1006677740166385603} + m_TextViewport: {fileID: 8775446268706734076} + m_TextComponent: {fileID: 4627887233940880744} + m_Placeholder: {fileID: 2207948231675607019} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 3 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: Ichni.Editor.DynamicUIVec3InputField, Assembly-CSharp + m_MethodName: ApplyParametersx + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: 0 + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &1850510772748301779 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4787506965637756451} + - component: {fileID: 2730124660575366187} + - component: {fileID: 4410930810289194328} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4787506965637756451 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850510772748301779} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8691581922048536374} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -113, y: 34.3} + m_SizeDelta: {x: 200, y: 35} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2730124660575366187 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850510772748301779} + m_CullTransparentMesh: 1 +--- !u!114 &4410930810289194328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1850510772748301779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Vector 2 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2792476238050467884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2982569072677602789} + - component: {fileID: 5733517955962958634} + - component: {fileID: 2207948231675607019} + - component: {fileID: 3191422783276742428} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2982569072677602789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792476238050467884} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8775446268706734076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5733517955962958634 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792476238050467884} + m_CullTransparentMesh: 1 +--- !u!114 &2207948231675607019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792476238050467884} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 0 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &3191422783276742428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792476238050467884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3770663466054615087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8775446268706734076} + - component: {fileID: 232433365534082906} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8775446268706734076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770663466054615087} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2982569072677602789} + - {fileID: 3395625732926724597} + m_Father: {fileID: 569625742320642989} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &232433365534082906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770663466054615087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &6252602016237025631 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1367879115595448537} + - component: {fileID: 1703477376207264783} + - component: {fileID: 4394899056533022438} + - component: {fileID: 2940678584699702629} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1367879115595448537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6252602016237025631} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 77923378718653813} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1703477376207264783 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6252602016237025631} + m_CullTransparentMesh: 1 +--- !u!114 &4394899056533022438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6252602016237025631} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 0 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &2940678584699702629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6252602016237025631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &7816450301353293395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4820553838928225789} + - component: {fileID: 3841134997005631993} + - component: {fileID: 4945643343227725966} + - component: {fileID: 2615181962848533274} + m_Layer: 5 + m_Name: InputFieldY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4820553838928225789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7816450301353293395} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 77923378718653813} + m_Father: {fileID: 8691581922048536374} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 50, y: -10} + m_SizeDelta: {x: 125, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3841134997005631993 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7816450301353293395} + m_CullTransparentMesh: 1 +--- !u!114 &4945643343227725966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7816450301353293395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2615181962848533274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7816450301353293395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4945643343227725966} + m_TextViewport: {fileID: 77923378718653813} + m_TextComponent: {fileID: 7888148428386565859} + m_Placeholder: {fileID: 4394899056533022438} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 3 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 2 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 3 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: Ichni.Editor.DynamicUIVec3InputField, Assembly-CSharp + m_MethodName: ApplyParametersy + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: 0 + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &8250293319114463492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3395625732926724597} + - component: {fileID: 310257184951281776} + - component: {fileID: 4627887233940880744} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3395625732926724597 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8250293319114463492} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8775446268706734076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &310257184951281776 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8250293319114463492} + m_CullTransparentMesh: 1 +--- !u!114 &4627887233940880744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8250293319114463492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "0\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 33.1 + m_fontSizeBase: 25 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8447414175088036024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5456343920773810964} + - component: {fileID: 4499456117278156033} + - component: {fileID: 7888148428386565859} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5456343920773810964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8447414175088036024} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 77923378718653813} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4499456117278156033 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8447414175088036024} + m_CullTransparentMesh: 1 +--- !u!114 &7888148428386565859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8447414175088036024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "0\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 33.1 + m_fontSizeBase: 25 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8777035771050497384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 77923378718653813} + - component: {fileID: 7431169212917346143} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &77923378718653813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8777035771050497384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1367879115595448537} + - {fileID: 5456343920773810964} + m_Father: {fileID: 4820553838928225789} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7431169212917346143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8777035771050497384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &8936320662031972394 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8691581922048536374} + - component: {fileID: 902276225497889537} + m_Layer: 5 + m_Name: Vector2InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8691581922048536374 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8936320662031972394} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 569625742320642989} + - {fileID: 4820553838928225789} + - {fileID: 4787506965637756451} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 450, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &902276225497889537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8936320662031972394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0fa96ed23c470e439b349bc8e29ae6d, type: 3} + m_Name: + m_EditorClassIdentifier: + title: {fileID: 4410930810289194328} + canvasGroup: {fileID: 0} + parameterName: + inputFieldX: {fileID: 564764156102873551} + inputFieldY: {fileID: 2615181962848533274} diff --git a/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab.meta b/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab.meta new file mode 100644 index 00000000..beca6dd5 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/Vector2InputField.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a6abc70beebfa934a9c5ef5b2b8ec115 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs new file mode 100644 index 00000000..dbb9dfcb --- /dev/null +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs @@ -0,0 +1,106 @@ +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame; +using TMPro; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.EventSystems; +using UnityEngine.InputSystem; + +namespace Ichni.Editor +{ + public class DynamicUIVector2InputField : DynamicUIElement, IHaveAutoUpdate + { + public TMP_InputField inputFieldX; + public TMP_InputField inputFieldY; + public bool isAutoUpdate { get; set; } + public bool isReceiving { get; set; } + + public override void Initialize(IBaseElement baseElement, string title, string parameterName) + { + base.Initialize(baseElement, title, parameterName); + if (parameterName != string.Empty) + { + ApplyContent(); + + inputFieldX.onEndEdit.AddListener(_ => ApplyParameters()); + inputFieldY.onEndEdit.AddListener(_ => ApplyParameters()); + } + } + + private void Update() + { + (this as IHaveAutoUpdate).UpdateContent(); + + // 检测鼠标是否在 inputFieldX、inputFieldY 或 inputFieldZ 上 + var selectedGameObject = EventSystem.current.currentSelectedGameObject; + bool[] isMouseOverText = new[] + { + selectedGameObject==inputFieldX.gameObject, + selectedGameObject==inputFieldY.gameObject, + }; + + if (Mouse.current.scroll.ReadValue().y != 0) // 检测鼠标滚轮 + { + float scrollDelta = Mouse.current.scroll.ReadValue().y > 0 ? 0.1f : -0.1f; // 根据滚轮方向设置增量 + + if (isMouseOverText[0]) // 鼠标在 inputFieldX 上 + { + float currentValue = float.Parse(inputFieldX.text); + inputFieldX.text = (currentValue + scrollDelta).ToString(); + ApplyParameters(); + } + else if (isMouseOverText[1]) // 鼠标在 inputFieldY 上 + { + float currentValue = float.Parse(inputFieldY.text); + inputFieldY.text = (currentValue + scrollDelta).ToString(); + ApplyParameters(); + } + } + } + + public void SetDefaultValue(Vector2 value) + { + inputFieldX.text = value.x.ToString(); + inputFieldY.text = value.y.ToString(); + } + + public Vector2 GetValue() + { + return new Vector2(float.Parse(inputFieldX.text), float.Parse(inputFieldY.text)); + } + + public void SetAutoUpdate(bool enable) + { + isAutoUpdate = enable; + isReceiving = true; + + inputFieldX.onSelect.AddListener(_ => isReceiving = false); + inputFieldY.onSelect.AddListener(_ => isReceiving = false); + + inputFieldX.onDeselect.AddListener(_ => isReceiving = true); + inputFieldY.onDeselect.AddListener(_ => isReceiving = true); + } + + public void ApplyContent() + { + Vector2 pos = (Vector2)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值 + inputFieldX.text = pos.x.ToString(); + inputFieldY.text = pos.y.ToString(); + } + + private void ApplyParameters() + { + Vector2 newValue = new Vector2(float.Parse(inputFieldX.text), float.Parse(inputFieldY.text)); + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue); + connectedBaseElement.Refresh(); + } + + public override DynamicUIElement AddListenerFunction(UnityAction action) + { + inputFieldX.onEndEdit.AddListener(_ => action()); + inputFieldY.onEndEdit.AddListener(_ => action()); + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs.meta b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs.meta new file mode 100644 index 00000000..d719bc5c --- /dev/null +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector2InputField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0fa96ed23c470e439b349bc8e29ae6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs index a35916e4..8b91346b 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIVector3InputField.cs @@ -8,8 +8,6 @@ using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.InputSystem; -using UnityEngine.Serialization; -using UnityEngine.UIElements.Experimental; namespace Ichni.Editor { diff --git a/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs b/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs index d6ed8eed..a4745941 100644 --- a/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs +++ b/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs @@ -130,6 +130,18 @@ namespace Ichni.Editor subcontainer.dynamicUIElements.Add(vector3InputField); return vector3InputField; } + + public DynamicUIVector2InputField GenerateVector2InputField(IBaseElement baseElement, + DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false) + { + DynamicUIVector2InputField vector2InputField = + Object.Instantiate(EditorManager.instance.basePrefabs.vector2InputField, subcontainer.rect) + .GetComponent(); + vector2InputField.Initialize(baseElement, title, parameterName); + vector2InputField.SetAutoUpdate(isAutoUpdate); + subcontainer.dynamicUIElements.Add(vector2InputField); + return vector2InputField; + } public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title, string parameterName) diff --git a/Assets/Scripts/EditorGame/GameElements/Track/Track.cs b/Assets/Scripts/EditorGame/GameElements/Track/Track.cs index 2c427fda..b66f0e4a 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/Track.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/Track.cs @@ -115,25 +115,29 @@ namespace Ichni.RhythmGame var trackRendererAutoOrientButton = inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Auto Orient", () => { - trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this, false, 0, true); + trackRendererSubmodule = + new TrackRendererSubmoduleAutoOrient(this, false, 0, true, Vector2.one, Vector2.zero); inspectorMain.SetInspector(this); }); var trackRendererPathGeneratorButton = inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Path Generator", () => { - trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(this, false, 0, true); + trackRendererSubmodule = + new TrackRendererSubmodulePathGenerator(this, false, 0, true, Vector2.one, Vector2.zero); inspectorMain.SetInspector(this); }); var trackRenderTubeGeneratorButton = inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Tube Generator", () => { - trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(this, false, 0, true, 4); + trackRendererSubmodule = + new TrackRendererSubmoduleTubeGenerator(this, false, 0, true, 4, Vector2.one, Vector2.zero); inspectorMain.SetInspector(this); }); var trackRendererSurfaceButton = inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Surface", () => { - trackRendererSubmodule = new TrackRendererSubmoduleSurface(this, false, 0, true); + trackRendererSubmodule = + new TrackRendererSubmoduleSurface(this, false, 0, true, Vector2.one, Vector2.zero); inspectorMain.SetInspector(this); }); diff --git a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs index f542a96b..98c30697 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackRendererSubmodule.cs @@ -24,15 +24,20 @@ namespace Ichni.RhythmGame public bool enableEmission; public float emissionIntensity; public bool zWrite; + public Vector2 uvScale; + public Vector2 uvOffset; - public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity, bool zWrite) : base(track) + public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity, bool zWrite, + Vector2 uvScale, Vector2 uvOffset) : base(track) { this.enableEmission = enableEmission; this.emissionIntensity = emissionIntensity; this.materialThemeBundleName = String.Empty; this.materialName = String.Empty; this.zWrite = zWrite; - + this.uvScale = uvScale; + this.uvOffset = uvOffset; + if (!HaveSameSubmodule) { this.track.trackRendererSubmodule = this; @@ -58,6 +63,7 @@ namespace Ichni.RhythmGame SetEnableZWrite(); SetEnableEmission(); SetEmissionIntensity(); + SetUV(); if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable) { @@ -92,9 +98,7 @@ namespace Ichni.RhythmGame var container = inspector.GenerateContainer("Track Renderer " + submoduleName[submoduleNameIndex]); var zWriteSettings = container.GenerateSubcontainer(3); - - - + var zWriteToggle = inspector.GenerateToggle(this, zWriteSettings, "Enable ZWrite", nameof(zWrite)) .AddListenerFunction(SetEnableZWrite); @@ -105,6 +109,14 @@ namespace Ichni.RhythmGame var emissionIntensityInputField = inspector.GenerateInputField(this, emissionSettings, "Emission Intensity", nameof(emissionIntensity)) .AddListenerFunction(SetEmissionIntensity); + + var uvSettings = container.GenerateSubcontainer(1); + var uvScaleInputField = + inspector.GenerateVector2InputField(this, uvSettings, "UV Scale", nameof(uvScale)) + .AddListenerFunction(SetUV); + var uvOffsetInputField = + inspector.GenerateVector2InputField(this, uvSettings, "UV Offset", nameof(uvOffset)) + .AddListenerFunction(SetUV); var materialSettings = container.GenerateSubcontainer(3); var themeBundleDropdown = inspector @@ -155,6 +167,12 @@ namespace Ichni.RhythmGame { meshRenderer.material.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity)); } + + protected void SetUV() + { + meshGenerator.uvScale = uvScale; + meshGenerator.uvOffset = uvOffset; + } } #region AutoOrient @@ -163,8 +181,9 @@ namespace Ichni.RhythmGame { public SplineRenderer splineRenderer; - public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) : - base(track, enableEmission, emissionIntensity, zWrite) + public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, bool zWrite, + Vector2 uvScale, Vector2 uvOffset, Material material = null) : + base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset) { this.splineRenderer = track.AddComponent(); this.meshRenderer = splineRenderer.GetComponent(); @@ -197,6 +216,8 @@ namespace Ichni.RhythmGame public bool enableEmission; public float emissionIntensity; public bool zWrite; // 新增 + public Vector2 uvScale = Vector2.one; + public Vector2 uvOffset = Vector2.zero; public TrackRendererSubmoduleAutoOrient_BM() { @@ -211,13 +232,16 @@ namespace Ichni.RhythmGame enableEmission = trackRendererSubmodule.enableEmission; emissionIntensity = trackRendererSubmodule.emissionIntensity; zWrite = trackRendererSubmodule.zWrite; // 新增 + uvScale = trackRendererSubmodule.uvScale; + uvOffset = trackRendererSubmodule.uvOffset; } public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); Track track = attachedElement as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -227,7 +251,8 @@ namespace Ichni.RhythmGame public override void DuplicateBM(GameElement attached) { Track track = attached as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -244,8 +269,9 @@ namespace Ichni.RhythmGame { public PathGenerator pathGenerator; - public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) : - base(track, enableEmission, emissionIntensity, zWrite) + public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite, + Vector2 uvScale, Vector2 uvOffset, Material material = null) : + base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset) { this.pathGenerator = track.AddComponent(); this.meshRenderer = pathGenerator.GetComponent(); @@ -278,6 +304,8 @@ namespace Ichni.RhythmGame public bool enableEmission; public float emissionIntensity; public bool zWrite; // 新增 + public Vector2 uvScale = Vector2.one; + public Vector2 uvOffset = Vector2.zero; public TrackRendererSubmodulePathGenerator_BM() { @@ -292,13 +320,16 @@ namespace Ichni.RhythmGame enableEmission = trackRendererSubmodule.enableEmission; emissionIntensity = trackRendererSubmodule.emissionIntensity; zWrite = trackRendererSubmodule.zWrite; // 新增 + uvScale = trackRendererSubmodule.uvScale; + uvOffset = trackRendererSubmodule.uvOffset; } public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); Track track = attachedElement as Track; - track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -308,7 +339,8 @@ namespace Ichni.RhythmGame public override void DuplicateBM(GameElement attached) { Track track = attached as Track; - track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -327,8 +359,8 @@ namespace Ichni.RhythmGame public int sideCount; public TrackRendererSubmoduleTubeGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite, - int sideCount, Material material = null) : - base(track, enableEmission, emissionIntensity, zWrite) + int sideCount, Vector2 uvScale, Vector2 uvOffset, Material material = null) : + base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset) { this.sideCount = sideCount; @@ -379,7 +411,9 @@ namespace Ichni.RhythmGame public bool enableEmission; public float emissionIntensity; public bool zWrite; // 新增 - public int sideCount; + public int sideCount; + public Vector2 uvScale = Vector2.one; + public Vector2 uvOffset = Vector2.zero; public TrackRendererSubmoduleTubeGenerator_BM() { @@ -395,13 +429,16 @@ namespace Ichni.RhythmGame emissionIntensity = trackRendererSubmodule.emissionIntensity; zWrite = trackRendererSubmodule.zWrite; // 新增 sideCount = trackRendererSubmodule.sideCount; + uvScale = trackRendererSubmodule.uvScale; + uvOffset = trackRendererSubmodule.uvOffset; } public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); Track track = attachedElement as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount); + track.trackRendererSubmodule = + new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -411,7 +448,8 @@ namespace Ichni.RhythmGame public override void DuplicateBM(GameElement attached) { Track track = attached as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount); + track.trackRendererSubmodule = + new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -428,8 +466,9 @@ namespace Ichni.RhythmGame { public SurfaceGenerator surface; - public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) : - base(track, enableEmission, emissionIntensity, zWrite) + public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity, bool zWrite, + Vector2 uvScale, Vector2 uvOffset, Material material = null) : + base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset) { this.surface = track.AddComponent(); this.meshRenderer = surface.GetComponent(); @@ -462,6 +501,8 @@ namespace Ichni.RhythmGame public bool enableEmission; public float emissionIntensity; public bool zWrite; // 新增 + public Vector2 uvScale = Vector2.one; + public Vector2 uvOffset = Vector2.zero; public TrackRendererSubmoduleSurface_BM() { @@ -476,13 +517,16 @@ namespace Ichni.RhythmGame enableEmission = trackRendererSubmodule.enableEmission; emissionIntensity = trackRendererSubmodule.emissionIntensity; zWrite = trackRendererSubmodule.zWrite; // 新增 + uvScale = trackRendererSubmodule.uvScale; + uvOffset = trackRendererSubmodule.uvOffset; } public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); Track track = attachedElement as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); @@ -492,7 +536,8 @@ namespace Ichni.RhythmGame public override void DuplicateBM(GameElement attached) { Track track = attached as Track; - track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite); + track.trackRendererSubmodule = + new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset); if (materialName.Trim() != String.Empty) { track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName); diff --git a/Assets/Scripts/Manager/BasePrefabsCollection.cs b/Assets/Scripts/Manager/BasePrefabsCollection.cs index 8410dd91..4cf97dc0 100644 --- a/Assets/Scripts/Manager/BasePrefabsCollection.cs +++ b/Assets/Scripts/Manager/BasePrefabsCollection.cs @@ -48,6 +48,7 @@ namespace Ichni.RhythmGame [Title("DynamicUI相关-Simple")] public GameObject dynamicUIContainer; public GameObject dynamicUISubcontainer; public GameObject inputField; + public GameObject vector2InputField; public GameObject vector3InputField; public GameObject parameterText; public GameObject hintText;