forked from bjin/mpv-prescalers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ravu-lite-r2.hook
104 lines (103 loc) · 48.9 KB
/
ravu-lite-r2.hook
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//!DESC RAVU-Lite (step1, r2)
//!HOOK LUMA
//!BIND HOOKED
//!BIND ravu_lite_lut2
//!SAVE ravu_lite_int
//!WHEN HOOKED.w OUTPUT.w / 0.707106 < HOOKED.h OUTPUT.h / 0.707106 < *
//!COMPONENTS 4
vec4 hook() {
float luma0 = HOOKED_texOff(vec2(-1.0, -1.0)).x;
float luma1 = HOOKED_texOff(vec2(-1.0, 0.0)).x;
float luma2 = HOOKED_texOff(vec2(-1.0, 1.0)).x;
float luma3 = HOOKED_texOff(vec2(0.0, -1.0)).x;
float luma4 = HOOKED_texOff(vec2(0.0, 0.0)).x;
float luma5 = HOOKED_texOff(vec2(0.0, 1.0)).x;
float luma6 = HOOKED_texOff(vec2(1.0, -1.0)).x;
float luma7 = HOOKED_texOff(vec2(1.0, 0.0)).x;
float luma8 = HOOKED_texOff(vec2(1.0, 1.0)).x;
vec3 abd = vec3(0.0);
float gx, gy;
gx = (luma3-luma0);
gy = (luma1-luma0);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (luma4-luma1);
gy = (luma2-luma0)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (luma5-luma2);
gy = (luma2-luma1);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (luma6-luma0)/2.0;
gy = (luma4-luma3);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (luma7-luma1)/2.0;
gy = (luma5-luma3)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;
gx = (luma8-luma2)/2.0;
gy = (luma5-luma4);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (luma6-luma3);
gy = (luma7-luma6);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
gx = (luma7-luma4);
gy = (luma8-luma6)/2.0;
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;
gx = (luma8-luma5);
gy = (luma8-luma7);
abd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;
float a = abd.x, b = abd.y, d = abd.z;
float T = a + d, D = a * d - b * b;
float delta = sqrt(max(T * T / 4.0 - D, 0.0));
float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;
float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);
float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);
float lambda = sqrtL1;
float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);
float angle = floor(theta * 24.0 / 3.141592653589793);
float strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);
float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);
float coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;
vec4 res = vec4(0.0), w;
w = texture(ravu_lite_lut2, vec2(0.1, coord_y));
res += luma0 * w + luma8 * w.wzyx;
w = texture(ravu_lite_lut2, vec2(0.3, coord_y));
res += luma1 * w + luma7 * w.wzyx;
w = texture(ravu_lite_lut2, vec2(0.5, coord_y));
res += luma2 * w + luma6 * w.wzyx;
w = texture(ravu_lite_lut2, vec2(0.7, coord_y));
res += luma3 * w + luma5 * w.wzyx;
w = texture(ravu_lite_lut2, vec2(0.9, coord_y));
res += luma4 * w;
res = clamp(res, 0.0, 1.0);
return res;
}
//!DESC RAVU-Lite (step2, r2)
//!HOOK LUMA
//!BIND HOOKED
//!BIND ravu_lite_int
//!WIDTH 2 HOOKED.w *
//!HEIGHT 2 HOOKED.h *
//!WHEN HOOKED.w OUTPUT.w / 0.707106 < HOOKED.h OUTPUT.h / 0.707106 < *
//!COMPONENTS 1
vec4 hook() {
vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5;
int idx = int(dir.x > 0.0) * 2 + int(dir.y > 0.0);
return vec4(ravu_lite_int_texOff(-dir)[idx], 0.0, 0.0, 0.0);
}
//!TEXTURE ravu_lite_lut2
//!SIZE 5 288
//!FORMAT rgba16f
//!FILTER NEAREST
a7ca113dc4d036bce1a84abc5bea31bbd9a7a13d5919a13dfe79febd3b27febd413532bcfac2123d7d6836bb8f0153bcea82a53d68fc00be04efa43da85201be296f8a3fb56e8a3fb56e8a3f296f8a3fd1f5eb3c034d0cbcc3ae80bc1b27b93b62d5b23de39bb43dda1608bee95607bec937f8bb69aff43cb8e19d3b4ba98bbc1e4ac43db7f50dbe5d40be3d62760fbe8e258a3f803e8a3f803e8a3f8e258a3f37a6c63cb645e0bb44ec7dbc68fd283c06a7b53d411fba3d7f680abe19ca07be6104b73a6a56003da4264e3bedb3c8bc5a2ce93df64d11be0d58c83db04d21be3bbe893fa8c1893fa8c1893f3bbe893f5bc10a3d2d513dbc606aa6bc834b2a3c1dfcc93d18fbc53d5f9b11be400312be1a7834bc1de0143d7606113c3447b5bc8207de3daa0c19bee054d43d58921bbeb2c5893f23fb893f23fb893fb2c5893f1185d73c60cc1fbc3386a8bc091f903c5adccd3dd874c73dbc3313be44c111be7fa92fbbb3cb143dcd97133ce37ef5bce225fc3dc9cc1dbe53b5dc3de6f429beaf65893f73f1893f73f1893faf65893f4d9e973c425f85bcfba620bc11f0c73cb4c2c43d703bbc3d733c0ebe31600cbe361ccc3b86f3393d265edebae9f212bd0882093ef2a609be20f3ae3dae5837bed847893f10088a3f10088a3fd847893f39cb113df3dbe6bba64a05bde2d7813c364ae93dca05df3d87701ebe26211cbed29264bbe284353de61d2f3c5bf524bd92c3143ec15f34bea5ae063e46663cbe5ae6883f059a893f059a893f5ae6883f49e7bb3cfb8d0bbb13f3e7bcee84a83cebcbd43da3fec23ddc5814bef0eb0fbe687a7a3cee154b3d7e6873ba734957bdde60253e07b928be75d1f23dc7904abec389883f08ef893f08ef893fc389883fe53a88bb3492f0bc0436ab3b48f53b3d11a5b43d9623a13d56ab06be80b3febda9e6333dac979f3d113b05bdecff9ebde41e463ebed1d6bd8103603d6bf96cbea974883f8a758a3f8a758a3fa974883f67590a3d58003f3bc4153bbd1414ac3c46e9013e0487ec3d85c32bbeacef24be53e98f3cc7786e3dd8bc873b564d8ebd210b393e57cc41beecd50f3e99305bbe3741883fbd6a8a3fbd6a8a3f3741883fc24a673c84fb293c019bdabc0e71833c0256e83d76eebd3d0afc20be1bf40ebea8cd513de403903de42cebbc30aba9bdc1104a3e3d8f0cbec85fad3d240365be10e4863fccb98b3fccb98b3f10e4863fe6d792bd8d43a7bd7797953d5791d23d4df4b33da1d7603dbe960abec5d9d2bd09be063e625a2a3ecb72f9bdf6bb32be45e7ab3ee0a0e23cb9dab7bd994fb3be074b853f80998d3f80998d3f074b853f723d0e3d683b29bced1c4bbc63960dbb728c9f3d8746a13d5748febd852efdbd338115bcc758123d528a68bb74645cbc6361ae3d9b4403be138aab3dc7ac06be5b828a3f2b4a8a3f2b4a8a3f5b828a3fc322fa3c51b004bcf18384bc1ac48d3b5e3ca63dbaa2ad3de3bd05beac5a00be49f889bbdf1a103d0376e93aaccfb8bc3920d63d44a30bbe1a24b53d715a16bebe078a3ff05f8a3ff05f8a3fbe078a3fbe503f3c240eb2bcb487deba391dcd3c4374983d74eda33dff9dfebd435bf4bdb042f93cc334723d81cad4bc202158bd14c3153e5043fabdbe9b9d3d775b42be6d7a893fc7368a3fc7368a3f6d7a893f85a7003d3ed953bcb76a8dbcaba53e3cb497cc3dabacc33d241013be3ec910be4ac138bcb6e5243d5cdeed3b457cc8bcd1abe73ddc3418beed24cd3d4d5a1dbec290893fed238a3fed238a3fc290893f137a8d3c02c876bc095f4ebc648acc3c3dcad33d4b82c23da7f514be135f10be50b10a3be33b3a3dab493b3bc2451ebdf1a80c3e13c114be9396c03d806e33bea5ec883fd35f8a3fd35f8a3fa5ec883f47b562ba2f7cfbbc401dd63b008a323d7d8cd73d11bebc3da75714be3c240fbe1409843c8f65743d7e2452bc9aa04ebd1c90223eb813f2bd73df863da33d4dbe59ae883ff68a8a3ff68a8a3f59ae883f8e59d83cf5bf1dbccc1fcdbc87f5ab3c4598f73dbf2ed63d555422beb10f1bbe31fd46bb93ff543d4c72f43b18e73abdc466203eb91330bed4b2f53d11bc40be891b883f77618a3f77618a3f891b883f4ef3013ade507bbc0ee006bc7a001b3d2868ea3d1b6db33d21131abed8540cbef550cb3c7bd78f3dca5d6ebc9e5790bd9a47483e334813be43bead3d988d60bec3dc863f8e7a8b3f8e7a8b3fc3dc863fc14f20bdf86f52bd9982173d7aec983dd6a2db3d402b963dec7c13be0af4febdae136a3d0256d23d987a4bbd5ea0cdbdadf9793e5a7b92bd4c4df53bfbb889be7f61863fd54a8c3fd54a8c3f7f61863ff0c5293c2d1fefbb7594c5bc5bce103d9c70103e37cfd73d592c35becfe31fbea117e73c9e93a03d60d3f3bb5a68b7bdbe105c3e98a72cbe56c4d23d4b9d6dbe1716863f61848c3f61848c3f1716863f2689f0bcac974dbcef00763c8401383d5505ff3dba1c5b3d307624bec8c8ddbdc5b39d3dc467f33d4a2b77bdf08302be5a9d943e21e9a2bd0f2704bcdbb590be5367813fb519913fb519913f5367813f9775dfbd227889bd0535dd3d87a7c93d553be93d76f4ecbbcccb1ebeb5aa59bdb677e73dad162e3e2e46debda59d2dbebaaee13e4b85853d7d393cbef562cfbe268c783f02cb963f02cb963f268c783f74be0c3dfeb033bcfbba2ebc72b236bb938d9e3d89e9a23dc71101be990cfabd7a7e26bc4419133d112200bb34fe6abcb374ad3dccb003bef007a63db41c03be9d5c8a3f53758a3f53758a3f9d5c8a3fb657ed3c7adf44bc633a35bc72a7a73bfd1f9e3d1024ac3d126a05bed883f6bd018c9839a7292c3dafe691bb9e0ceebc6e06dd3d0fb40ebe4c3ab83d970718be72088a3f9e628a3f9e628a3f72088a3fbbfa2d3c792cd1bc661d993b7e01c73c5b97b83d4d05af3de4ba10be5c64fcbd31f1243c984b7a3d908fa0bc38aa2fbda68b173e635306be07b1ab3d69e541be6b43893fdb918a3fdb918a3f6b43893fab40f23cd43c63bc232b72bc30ca483cb6b2d03d2536c13d5b2a14be5c8110bea51b44bce4342d3d6c0bd53bb29bcfbc8679ea3dcced15be6485c43d27cb1cbe9b62893f61538a3f61538a3f9b62893f8d71293cfe978ebc4357e1bb24e6ee3c3d55e03d299dbd3d8ed917be01c610be8b649c3a4360513dbdf27f38cc832abd946b143e486e12becef7b23da84d36be3e6e883f14ce8a3f14ce8a3f3e6e883fde1903bc35db01bdbe50353c0bad453d15d2e93dfab4b93d49ec18be6f9c11be0051473ceda7823ddacf59bc052954bd92852d3e8cbef5bd89df7a3ddaa250bea3e5873f19348b3f19348b3fa3e5873fd6d5a13caf174fbc388c9abc007cce3c53c8033e3835d23d7d3e27bedb2a1cbedcbec4bbb8c1653d3f570f3cedb245bda589273e3ee02cbe9183e13d292041bebe6e873f71038b3f71038b3fbe6e873fbced56bce50d94bc79f7bf3a6c4f3b3d2660023e7ca2a63d0a5020be64680bbe5604b43c8edba03d30827abc925f9cbde980583e20a410bedbe18e3d2f2064be745e853feacb8c3feacb8c3f745e853fd80439bd661235bdd3091b3d0f53963d2215003e60518d3d3fd21cbe7e0d01bed3182b3d3b4bce3de81923bd0149c1bde65c7f3e9399afbdacafd43bc7a084befa7a843f71ec8d3f71ec8d3ffa7a843f6df4ecbafa5e39bc981168bc69622e3d7261223edc1cc73da33b40be1d231ebe3407953cfb36aa3d6d20d73ad51cc0bdbc2a6b3e40852cbef5c6b03d88056cbe47ff833fda868e3fda868e3f47ff833f77fb4bbdee4e2bbc4452fb3cd8d34a3de69f133e671ddb3c4d4730bec0efb3bdb9e0773d8d72023e89333ebdf1080abe3184a83ee793c0bd7a6310bd7dde8fbeb05f783fbf2b963fbf2b963fb05f783fc620c9bd96a593bc04cbb83d7f0a683d153ae93d63f484bd50311cbecf07d83bffbc973d470f293ec83290bdd9cb27be9c11e63e789dc2bb201932be6fb8b6becc236b3fbd729d3fbd729d3fcc236b3fbd6d103de3f828bc173c3abc7cd36fbb181da13d7c8aa13df46101be9182fabddd8e38bcb2020e3db41705bab7da5fbc3f46aa3d6db402bed079a53d502002be455b8a3f82798a3f82798a3f455b8a3fe496e63c722958bc26ab16bc493ea93b95f9a73d7825b13d40f809be0413fcbd85714abbbebf223d258224b9043fe7bc9863db3d6fc70dbe7b5db43d28a715bed3fe893f996c8a3f996c8a3fd3fe893f6a8b553c969fbcbcecd30ebb2df0d43c5510c13d7659aa3dc9ad13bed6d9f8bd6532b6bbd6ee823d981065bb2f1944bd0bcd203e1a650ebea99da83d787a41be686a893f60908a3f60908a3f686a893f5db4eb3c841b6dbc9bf156bc9714473c2129d53df55dbf3d7f6415be3e8810be58d163bcaaef2c3d5cba043c00cacebc01aee93dbef614befa7abe3d71391abe4a30893f0a858a3f0a858a3f4a30893fe296e13ba44a87bcdf67a0bb0061f53ccf55ee3d1a96b93def6e19be645f13be67ca5bbb0da15c3d1b719db953a126bdf3f5153efdec13bebaa0ac3d179632be6f06883f2f2a8b3f2f2a8b3f6f06883f9cb251bca1dfd9bc8fb5203c0718493d3b6a003e934ab73d39ee1cbe4ee716be5f5b983b6a34803d0b7719bc724c47bd518c2e3e335903be2aad823d843f4abeb842873fe7be8b3fe7be8b3fb842873fbe107b3c970e60bc56ba78bca879e03c00fe0c3ecc3ace3daf0e2cbe78501ebea23c4bbc318e743d40692d3c68c942bd39f32a3e09a12dbe1088d43d8b5b3dbe11ab863f76bb8b3f76bb8b3f11ab863fa7f0b2bc9be282bca324dc3b5c07433d4548123ea55c9c3d60c226be90d20dbee0cb563cb8daac3d0b4950bc80f39dbd9d085d3e38ed17be01ec823d64355bbef31b843f8be28d3f8be28d3ff31b843fa4db41bdbe140abdc7cf093d36da8b3d0bfa113efde28c3dfcfd25be9e4a06be4ee0cb3cbe50c73d868bf2bca55bafbd5174773edd07e4bd46f9a23c8b0373beeb13833fe3fb8e3fe3fb8e3feb13833f57dc14bc88ee4fbc805e26bc6c09433d17de373eaed0b83d3acd4abef4cb20bec96e86baefcaac3dd6408f3cf978bdbd7055733e79e231be3d9f9b3d100e64be8b36823f2434903f2434903f8b36823f2fc186bd24c606bb4267213d09e0493d765b263e88c1563cd77439beb5f6a3bd322d153da381023e1de0c7bcd6b709bebb7db03e910103bee3c918bdd0ef85be04f5723f32a9983f32a9983f04f5723f0156b8bdff94bd3a87d9963d1e0d2b3d916fcd3d77a185bd6f3816be66bcce3cc461723dc59c223e742b55bd0cd827bec3d0e43edb1596bdf05810be59f4a3bef09b663fec3e9f3fec3e9f3ff09b663fb441123d69de2abca02a34bc2b598fbbabaca23d4c36a43db0e202be3daefbbd02c95abcfb360f3d8da78e3ad9b15dbc2afda73dd81903be0b94a33d6662ffbda0748a3fa6638a3fa6638a3fa0748a3fb71cf03c740257bc4b4111bc266e583bf3f9a73d806dab3d6e0b0abeb9f7f5bd2f8439bc20232b3dde68833b0fdcdbbc69abde3d1a1210be2932b43d5a1e14bec02e8a3fb43d8a3fb43d8a3fc02e8a3f9ad60a3c864ebebc7fe1373bf97ecf3cc802d83d742db53d275f1dbe673e02be07c3d6bcc9c5923d38ea04bca82707bd5b971d3e07ab13be55e6ab3de08439bef785893fb88a8a3fb88a8a3ff785893f5553e83c172d63bc743d4abc97e5383cd989db3dfc3fbd3d081b17be5dc510bea1028cbc59d42e3de1f2143c9df5c1bc2bc7e53ddf0015bef047bb3db5c816be9301893ff7b48a3ff7b48a3f9301893fb125d63bba1363bca03f90bbe9d2da3c2c47fa3de320b53d71031cbe9dc513bed03522bcaa65603da1b4003b76ba1cbd03d7123efc2c17bea701aa3d1aa929be4797873f9e868b3f9e868b3f4797873f00e67fbce455a9bc611ef23bb17e413db4b30b3e80b1ba3d269122be75141dbe735a78bb5b707d3d9515e3bb485a31bd871a2a3ef73510bee32c943d68dd3ebe60bf863f74158c3f74158c3f60bf863f401b4a3cb41e61bc8ce84bbce2c6e43cdfe0163e7d32c93d4d8f30bea5c220be3f23b2bc7e157d3d2caf743c845f38bdae93293e91df2ebe4eaec93d0c2835be6b12863ff0468c3ff0468c3f6b12863fdb13c5bc639b35bc5931eb3bfe96333d07df213e85c2983d41fb2cbe433713be6b0e0cbbad23ad3d0fd2babb88b48fbd5dfb573eb9d821be8ff7813db8434abe482c833f36978e3f36978e3f482c833f32c93dbda16fa8bcb048c83c8c08793dd719243eb02f8e3d37922abe49f810be7733003c71a9bf3d4eeebabc75ed94bd80a9663e19570bbea814193dd17e56be550b823f23828f3f23828f3f550b823fbd5257bcaa6234bc59ac02bce125453d53e94c3e57c8a43d87e152beb8cf21be647dbebcb58fb33d63100c3dcbe0bbbd52f7783ed10b3dbe5f798d3d5f1657be9e93803f58b2913f58b2913f9e93803ff6659abdc23a003c45851f3d61eb483d0705363e92ec1f3cf7763dbee170abbd8a86813c99c7013ea40380bbcba60abe7d25ad3ee0b725be1afcd1bc0f176ebe132b723fbaba983fbaba983f132b723f2ad9c1bd34e8553be969703dfbe25c3d0747fc3defdb90bc980124bebdc0acbc7ed72d3d991c093e84f621bdf2b30dbe5e63d23eeb9c01befe6a9cbd434794be79cc693fd0b69c3fd0b69c3f79cc693fd1f41c3d9ab809bcfcde5bbc12cbd8bba503a93d658aa83de20106be41dbffbd1b5b5bbc07350f3d5915dd3a808c6abc8a91a33dffc702be35eea33d6cfdfbbd2d718a3fee6b8a3fee6b8a3f2d718a3f187c083d18e350bc19af3fbc9783823a0188bc3d2e38a83d2e030cbef0aa00be45d2d1bc7385383d0b484b3c4f08cbbc3e65c53d43270dbe2facaa3d6b2605be41aa8a3f6bbd893f6bbd893f41aa8a3f48a11abb251460bc3181b93aceecd93c63faf83d85f3c53d928524be8b5512bec56fc0bc8c02653d482dc5bbf67dbebcb450153eefe71cbe4161b43d6ad729be402d883f2fb78b3f2fb78b3f402d883f1f40e93c950b5fbc672c43bc70422b3c6bcfde3dd433bc3de42c17be4ea111be23cda1bcc6742f3df796273c3aa0b8bc00cbe13dc41c16bea127ba3d1d2213be11fd883fccbc8a3fccbc8a3f11fd883f9ab2f73b3dbf22bc506cbabb83eab33c266c043e7dcfb03d68231dbef0d616be1420a9bc3e29603d031a763ba79ff4bc67540b3e3ea01abe88c3ab3d441f1ebe7156873f9bb28b3f9bb28b3f7156873fe13481bc26fb2ebc5b6a4e3976032d3d572d173ea0aeb13d26eb20be3b3424be6df588bc93607c3df22f96bb00b607bdaf64213e159d1abe0aa6a13d8e632ebe2f3f863f08468c3f08468c3f2f3f863feb96423ceb8551bc31ff3ebc0a7eda3c10171f3e905cc43db81333be898c23beca0803bd80e6823df4da953c61b526bdeb74253ed70132bebed5c43df5342bbe00a5853fdba98c3fdba98c3f00a5853f2bbfacbc13c894bbc5be123ba73c173d3d41333e7ce4953d714a2fbe891c1ebebbc9cfbc9cf0a93d07b9123abb8057bdece8473eafa22bbe569f8c3de89c32be98a5823fc4cf8e3fc4cf8e3f98a5823f73b126bd3b25c1bbee702e3c9e8e4c3d265b353e62668e3daca22abe59481dbe6bd389bca85eb33d35e088bcd2c84cbdd5f04d3eb2bf1fbee8096c3dbac836be8877813fc6568f3fc6568f3f8877813f6af964bc2417e9bba9ebc8bbe0b2313d9f5d5e3e91498d3d197056bee10c22be86ab62bd6cbabf3d25b8523d0634adbd8338723e10524ebe8d50843d188e39be7c007f3f8f9d923f8f9d923f7c007f3fb57e90bdb00c673cf8dccd3ccdbb453d17aa563e3bf28b3cc1193fbeea03eebdff05c4bc6585f03d409d813c8b6ddcbda509943e490c3bbe0b1b493bc4c03fbeb745753f1aa8963f1aa8963fb745753f16dbc7bdffdd473c4f7c0c3d682e893d610f413eb3fc893cf13128be0802dfbd27b4453c8229db3d51750ebd3068b8bdf4efa63ea81421be4db519bc30cd6cbee0226f3f5cfe983f5cfe983fe0226f3f50e81c3d8d1c5cbc92120abcec8dd6bb8e49a33d95eaa33dccc602be8cb4fbbd5c7e6bbc3b580f3d00bee13a19365bbc62bea83d20fd05bedf81a83d6a9affbd26718a3fde6a8a3fde6a8a3f26718a3f18e8093d1c6743bc686c54bcef81853a5265c63ded2daa3dee620dbe521305beabf4d1bceaaa3c3d38055c3cf8fedbbcc4f2bc3d182d0cbeaadca73d736b00be86c18a3f97a3893f97a3893f86c18a3f03d828bbfb8bb73aa0365fbc362bdb3c6a56153eed8bb43d11c31cbe1fdf29be6fa3bebc2817643d19f9c8bbf2ecbebc2790f93dd06624be88eec53daf9912be5429883f49b68b3f49b68b3f5429883fc73ce93c022e43bc100d5fbcc94c2b3c53c7e13da227ba3da51c16be4c2013bebda1b8bcb7732f3dfb8c273c00c8a1bcf4cbde3db62c17bedf33bc3dac9f11befffc883fe4bc8a3fe4bc8a3ffffc883f42d8f73b007bbabbb6c522bc42e7b33c7b530b3e37c3ab3d62a01abef01d1ebe4eaff4bc972e603dee71763ba827a9bc2a6b043e69231dbe61cfb03dbcd516bea256873f6bb28b3f6bb28b3fa256873ffe3981bc6c6e4c39cdfd2ebcb6072d3dde67213e97a4a13d289d1abe4d652ebe7bb207bd2f637c3df50696bbf90f89bcbc2d173e98ea20be73adb13dfb3324be2d3f863ffa458c3ffa458c3f2d3f863fe097423ca0ff3ebcd08551bcb87dda3ce374253ec6d5c43ddf0132beea342bbe45b526bd99e6823dd0da953c040903bd11171f3eb61333be945cc43d8e8c23be00a5853fdba98c3fdba98c3f00a5853f1dbfacbc35c0123b01c994bba83c173de4e8473e449f8c3da5a22bbee19c32beae8057bdb1f0a93d2db1123aedc9cfbc4041333e6f4a2fbe7ce4953d8e1c1ebe99a5823fc4cf8e3fc4cf8e3f99a5823f73b126bdee702e3c3b25c1bb9e8e4c3dd5f04d3ee8096c3db2bf1fbebac836bed2c84cbda85eb33d35e088bc6bd389bc265b353eaca22abe62668e3d59481dbe8877813fc6568f3fc6568f3f8877813ff5f664bc40edc8bb7e16e9bb66b2313d5538723e0151843d3e524ebef78d39be3734adbd12babf3d34b9523d89ab62bd9c5d5e3e397056bebc498d3dd30c22be80007f3f8d9d923f8d9d923f80007f3f9b7e90bd13ddcd3c4f0c673ca2bb453d9f09943e491e493b510c3bbebdc03fbe5f6ddcbd8285f03d899c813c7706c4bc0baa563ecc193fbed3f28b3cdb03eebdb845753f1aa8963f1aa8963fb845753f18dbc7bd517c0c3d26de473c652e893d02f0a63ee4b519bc9e1421be4dcd6cbeb567b8bd5929db3dd9740ebdd1af453c500f413eec3128be61fc893cde01dfbde2226f3f5bfe983f5bfe983fe2226f3faf41123d7b2b34bcbcdf2abc2d548fbb20fda73d3794a33dc71903beaa62ffbd64af5dbc4e360f3dbe9d8e3a3cc75abca2aca23dbce202beb836a43d97aefbbd9e748a3fa8638a3fa8638a3f9e748a3f381cf03c874111bc430257bc3772583b5fabde3d1c32b43d091210be601e14be70dcdbbc43232b3de067833ba48339bcfdf9a73d660b0abe7a6dab3dc7f7f5bdc22e8a3fb23d8a3fb23d8a3fc22e8a3f9ad60a3c7fe1373b864ebebcf97ecf3c5b971d3e55e6ab3d07ab13bee08439bea82707bdc9c5923d38ea04bc07c3d6bcc802d83d275f1dbe742db53d673e02bef785893fb88a8a3fb88a8a3ff785893f2c53e83c2c3d4abcf32c63bc52e5383c2fc7e53df647bb3de60015beb2c816be97f5c1bc3ad42e3d27f3143c7c028cbce589db3d0b1b17befd3fbd3d60c510be9301893ff8b48a3ff8b48a3f9301893ff928d63b4b3d90bba61463bcf4d1da3cf6d6123e9901aa3df52c17be0ca929be84bb1cbd1865603d9ec0003b673222bcdd46fa3d8c031cbe0e21b53d6fc513be4897873f9c868b3f9c868b3f4897873f5de57fbc0a1df23be856a9bc397f413d731a2a3e092d943dfe3510be60dd3ebe465931bd696f7d3d9a14e3bb0f5d78bbc0b30b3e2e9122be33b2ba3dd4141dbe60bf863f75158c3f75158c3f60bf863f531a4a3c80e84bbc6c1e61bc33c7e43cb393293e45aec93d88df2ebe152835be9b5f38bd6f157d3dfcae743ce322b2bce1e0163e478f30be6732c93da2c220be6b12863ff1468c3ff1468c3f6b12863f1b14c5bc4c30eb3bd79a35bc1b97333d63fb573ea7f7813dc7d821bebb434abea1b48fbd8323ad3d9ccfbabb0c0b0cbb08df213e46fb2cbe97c2983d473713be482c833f36978e3f36978e3f482c833f47c93dbdc048c83cc66fa8bca908793d84a9663eae14193d1c570bbed07e56be83ed94bd7ca9bf3d5deebabcb033003cdf19243e3d922abec12f8e3d54f810be550b823f23828f3f23828f3f550b823fde5257bcdaab02bc1a6334bce125453d6df7783e05798d3daa0b3dbe741657be9ae0bbbd818fb33d98100c3db77dbebc49e94c3e7ae152be64c8a43dc2cf21be9f93803f58b2913f58b2913f9f93803f16669abd2a851f3d4d3b003c9beb483d8325ad3e0dfcd1bce4b725be19176ebed4a60abe99c7013e3c0280bb7e86813c1905363ef2763dbed2eb1f3cfc70abbd152b723fb9ba983fb9ba983f152b723f1cd9c1bdd269703de0e6553b02e35c3d5963d23efc6a9cbdf89c01be394794be1ab40dbea91c093ee0f621bd34d82d3de846fc3d8c0124be97db90bcd9c0acbc77cc693fd1b69c3fd1b69c3f77cc693fc76d103ded3b3abce1f628bc90dd6fbb7946aa3d9979a53d82b402be3a2002beece15fbceb030e3d040c05bab08d38bcb61ca13dc76101beb189a13db381fabd485b8a3f80798a3f80798a3f485b8a3fe496e63c26ab16bc722958bc493ea93b9863db3d7b5db43d6fc70dbe28a715be043fe7bcbebf223d208224b985714abb95f9a73d40f809be7825b13d0413fcbdd3fe893f996c8a3f996c8a3fd3fe893f1089553ce8d10ebbcd9fbcbc50f1d43cd2cc203ec39da83d28650ebe3e7a41be301a44bdf6ee823d971465bb582ab6bb8210c13dcfad13be8259aa3d02daf8bd686a893f60908a3f60908a3f686a893f9fb4eb3ceaf156bc6d1b6dbc5814473cf3ade93dfb7abe3dbcf614be6e391abe0fcacebcbbef2c3de6ba043c31d263bc2429d53d876415befd5dbf3d3c8810be4c30893f09858a3f09858a3f4c30893fdc92e13b9f6aa0bb484a87bc5a62f53cfef5153ecba0ac3dfaec13be2f9632bea5a026bd9ca15c3d6bdb9db9a7d05bbb1f56ee3dc56e19bee095b93d995f13be6f06883f2f2a8b3f2f2a8b3f6f06883f9cb251bc8fb5203ca1dfd9bc0718493d518c2e3e2aad823d335903be843f4abe724c47bd6a34803d0b7719bc5f5b983b3b6a003e39ee1cbe934ab73d4ee716beb842873fe7be8b3fe7be8b3fb842873fa0107b3cdcb978bc090f60bcb279e03c39f32a3e1288d43d0aa12dbe8c5b3dbe67c942bd1b8e743d7b692d3c7f3c4bbc01fe0c3eb90e2cbee33ace3d7b501ebe11ab863f76bb8b3f76bb8b3f11ab863f5af0b2bc7625dc3bf1e282bc4407433da7085d3e1eec823d49ed17be6c355bbe77f39dbdeddaac3dfd4950bce6ca563c3c48123e65c226beb25c9c3d88d20dbef41b843f8ae28d3f8ae28d3ff41b843f87db41bdb7cf093dbc140abd2dda8b3d3b74773e4cf9a23cdc07e4bd770373bea85bafbdae50c73d698bf2bc78e0cb3c08fa113ef6fd25befee28c3d9f4a06beeb13833fe3fb8e3fe3fb8e3feb13833f75dc14bc565e26bc8eee4fbc6b09433d7855733e3f9f9b3d79e231be1a0e64befc78bdbdf5caac3deb408f3cb47086ba1ade373e41cd4abea7d0b83deecb20be8b36823f2434903f2434903f8b36823f35c186bd4567213d23c606bb11e0493db47db03eecc918bd900103bec9ef85bedbb709bea281023e26e0c7bc4e2d153d7b5b263ed77439be80c1563cbef6a3bd03f5723f32a9983f32a9983f03f5723ffc55b8bd7dd9963ddf92bd3a370d2b3dc2d0e43eef5810bed81596bd59f4a3be0cd827bec09c223e7e2b55bde061723d836fcd3d643816be63a185bd09bcce3cf29b663feb3e9f3feb3e9f3ff29b663fc3be0c3dccba2ebcceb133bc59b436bba774ad3d0f08a63dc9b003bec31c03bec4f96abc9018133da21e00bbf18026bced8d9e3def1101beebe9a23d060dfabd9b5c8a3f55758a3f55758a3f9b5c8a3fe257ed3c123a35bc88df44bc4fa6a73b8d06dd3d3a3ab83d1db40ebe930718be5c0ceebc73292c3d19e891bb0aa59839c11f9e3d136a05be3324ac3db783f6bd6f088a3fa1628a3fa1628a3f6f088a3fd9f92d3c281f993b292cd1bc4501c73ca78b173ef3b0ab3d805306be48e541be62a92fbd564b7a3d4e8da0bcc4ea243cf497b83d1fbb10be4905af3d8b64fcbd6943893fdd918a3fdd918a3f6943893f2640f23c0c2b72bcc03b63bc2cca483c8b79ea3d2485c43dc2ed15be15cb1cbe189ccfbcd0342d3dd70cd53b311b44bcc5b2d03d502a14befd35c13d5c8110be9b62893f62538a3f62538a3f9b62893fe471293c8357e1bbba978ebcc2e5ee3c9a6b143ec4f7b23d4f6e12bea04d36be7e832abd2660513dcc57803899589c3a4b55e03d8fd917be239dbd3d04c610be3e6e883f15ce8a3f15ce8a3f3e6e883fa11903bc1550353c18db01bd08ad453d96852d3e52df7a3d76bef5bddca250befb2854bdd1a7823dc5ce59bca750473c10d2e93d44ec18bef7b4b93d709c11bea3e5873f19348b3f19348b3fa3e5873f1ad6a13ce48c9abc5f154fbc3d7bce3cb189273e8683e13d52e02cbe1f2041befdb245bde0c1653d40570f3c32bfc4bb3dc8033e5d3e27bee034d23db92a1cbebc6e873f73038b3f73038b3fbc6e873f66ee56bc54f1bf3a640d94bc8c4f3b3de280583ebce18e3d11a410be272064be845f9cbd7cdba03d18827abc5804b43c3560023efd4f20be5aa2a63d71680bbe735e853febcb8c3febcb8c3f735e853fe10439bdc7091b3d351235bd0653963ded5c7f3ec2afd43b8e99afbdcda084be0249c1bd3b4bce3dec1923bdda182b3d2115003e3cd21cbe43518d3d760d01befa7a843f71ec8d3f71ec8d3ffa7a843f3d09edbadd0e68bce95d39bc15622e3df32a6b3e8ec6b03d76852cbe52056cbef91cc0bd1737aa3d6636d73ae705953cab61223edd3b40bea31cc73dfd221ebe3eff833fe2868e3fe2868e3f3eff833f78fb4bbd4c52fb3cf74e2bbcd8d34a3d3284a83e7d6310bde593c0bd7ede8fbef1080abe8b72023e88333ebdc2e0773de49f133e4c4730be6c1ddb3cbeefb3bdb05f783fbf2b963fbf2b963fb05f783fcf20c9bd0acbb83d87a593bc7f0a683d9a11e63e221932be1a9fc2bb67b8b6beebcb27be580f293ebe3290bdfbbc973d263ae93d58311cbe7bf484bd1609d83bca236b3fbe729d3fbe729d3fca236b3f323d0e3da11d4bbc163b29bcc6900dbb5761ae3d048aab3d9a4403bebaac06be65655cbcc558123d228868bbcc8015bc798c9f3d4948febd8846a13d9b2efdbd5c828a3f2a4a8a3f2a4a8a3f5c828a3f8221fa3c7f8484bc23ae04bc7ac68d3b3220d63d7424b53d3ea30bbea05a16be0fcfb8bc311a103d1977e93ac1f489bbc33ca63ddebd05be9ca2ad3dd65a00bec0078a3fee5f8a3fee5f8a3fc0078a3f2a553f3ceaaadebaf40cb2bce31bcd3c28c3153e439c9d3da143fabda05b42beca2058bd5634723dc1cad4bcfd42f93ca373983d869dfebd6ceda33d055bf4bd6f7a893fc6368a3fc6368a3f6f7a893fc5a7003da96a8dbc5ada53bca4a53e3ce1abe73d1e25cd3de23418be655a1dbe827cc8bcd9e5243d5added3bd6c038bca497cc3d261013beb5acc33d3ac910bec290893fed238a3fed238a3fc290893f3a7a8d3ced5e4ebc41c876bc538acc3cf0a80c3e9b96c03d17c114be806e33beca451ebdbd3b3a3da74b3b3b82b20a3b2bcad33db5f514be6c82c23d0e5f10bea5ec883fd35f8a3fd35f8a3fa5ec883f509c62bae51dd63bd97bfbbc6489323d2e90223e83df863dd513f2bdaf3d4dbeec9f4ebda065743d682452bc8407843c818cd73daa5714befabdbc3d2f240fbe59ae883ff58a8a3ff58a8a3f59ae883f5559d83c781fcdbcc1c11dbc3ff6ab3cba66203ed0b2f53da81330be11bc40be68e73abdb4ff543d6b71f43b43fa46bbc498f73d965422be422fd63ded0f1bbe891b883f77618a3f77618a3f891b883f61f9013ae1df06bc17517bbc62001b3d9947483e45bead3d334813be998d60bea75790bd77d78f3dae5d6ebc1951cb3c1868ea3d23131abe206db33dd0540cbec3dc863f8e7a8b3f8e7a8b3fc3dc863fc24f20bda682173d017052bd78ec983dacf9793ea14df53b617b92bdfab889be73a0cdbd1b56d23dc07a4bbdca136a3dcba2db3de77c13be312b963df7f3febd7f61863fd54a8c3fd54a8c3f7f61863fcdc8293cef95c5bc0e22efbbb8ce103d88105c3ec0c4d23d62a72cbe829d6dbe2368b7bd6993a03d7dd9f3bb1219e73c5e70103e1b2c35be84cfd73df6e31fbe1f16863f5a848c3f5a848c3f1f16863f5b89f0bc2501763cc9974dbc9901383d589d943ede2604bc29e9a2bdd9b590bef58302bed167f33d5c2b77bdceb39d3d5d05ff3d327624beb81c5b3dccc8ddbd5267813fb519913fb519913f5267813f8c75dfbd2735dd3d257889bd5ca7c93dc0aee13e77393cbe2d85853df762cfbe929d2dbea9162e3e4646debdb377e73d483be93ddccb1ebea9f3ecbb76aa59bd228c783f05cb963f05cb963f228c783f083c0f3dcf0a48bc943238bca399c8bafdfcb33dd203b33dabce07be029608be3d1b75bcf145153d61cddcba9d1b23bcdb19a23d8dc500bed7a3a13d40affcbdfe648a3f81558a3f81558a3ffe648a3fc30e073d7a9b9bbc99e4cbbbe5ec333b4a6dcc3d86aebf3def0310be76a312bef927b1bc3e440e3dae61353ad4a05cbb82d6a23dce8b01befed3a83d315f00be9a0c8a3f4b5b8a3f4b5b8a3f9a0c8a3ff201cf3c5cf199bc1e434dbb097a0f3cbb30fb3d6b95c73dc73d11be1f932bbec39606bd4ff50e3d07a376b96fa5043c210da63d30a704be7c11ad3dd558fcbd89f4893f8bd0893f8bd0893f89f4893ff23f0b3d96f9a7bc9cf23ebc5cd92d3cda45e23dbd4ad73db88e1abeb33f1dbeb484b8bc24e3163dd6c1113cb27b36bcfabcca3dc3e311be1c5ec63d273212be2cb7893fd2f6893fd2f6893f2cb7893fe1b5d53c545ea6bcec4c25bcac9f923ce3cbfd3da988de3dbecd1ebe359f2abeb402fdbc62fd183d0214063c329c01bbfd1ccd3d2fda12bec68dc63d093d11be4760893f77f3893f77f3893f4760893f8c49793cbeb80bbc018591bc2818e33c4b0e073ee8ffb03dbbf50abee0f434bed27524bdaf9d423da9af70bbc0f2263c1eaec43dbccc0dbe119abb3d92fb0bbe1e48893f600f8a3f600f8a3f1e48893f90cf113d64da05bd44b3e0bbaf69813c48f6143e22bd063e517534be838b3cbed8db25bd64e6353db99b2d3cbd8b56bb27e8e83d0e3d1ebee085de3d10e31bbecfe4883fc89a893fc89a893fcfe4883f83d5bb3c835ce8bca8fc05bbf481a83c737b253e05d8f23dffbe28be05a24abe5b2758bdaabf4b3d424b8cbaf9e57d3c6672d43d092f14be3d8ec23dc7bb0fbe9688883f5def893f5def893f9688883f7a92bcbb34a9c03bfe8bf5bc1883423dec99443ef252623df2fad7bd676a6bbe4cf0a2bd965da13d4aa008bd3ac53b3d249bb43d359e06bef6dba03ddea7febd4873883fb5758a3fb5758a3f4873883fa5570a3d9c263bbd770c413b19ffab3c0b12393ecad50f3e88ce41be19355bbebd5e8ebdc1896e3dc123873b1237903c9be3013e38be2bbef975ec3d2ee824beee40883f006b8a3f006b8a3fee40883f41e1663ccaf2dabcf6c22a3c2aa4833c860b4a3eb142ad3dc1810cbedbfb64beedc5a9bd00f78f3dadf5eabc6204523d684ce83de6f620beccdfbd3d4fef0ebecae3863ff5b98b3ff5b98b3fcae3863f689293bd889c953d4638a7bd0659d33d00bbab3e0ceab7bd4b03e33c471fb3be742133be2c612a3e8c74f9bde629073ecef4b33dfa970abe03a3603daff3d2bdfd49853ff5988d3ff5988d3ffd49853ff145153d3d1b75bc9d1b23bc61cddcbad203b33dfdfcb33d029608beabce07becf0a48bc083c0f3da399c8ba943238bcd7a3a13d40affcbddb19a23d8dc500be81558a3ffe648a3ffe648a3f81558a3f32430e3d1627b1bc50965cbb9161353ac5aebf3d726dcc3da7a312bef50310be589c9bbc1c0e073ddbf0333b7adecbbb00d4a83d585f00beb8d6a23dc18b01be4c5b8a3f9a0c8a3f9a0c8a3f4c5b8a3f48f40e3d4a9606bd83a3043ce19a75b9cf95c73d8d30fb3d07932bbefa3d11be1ef499bc3703cf3c77770f3cfa2c4dbb5211ad3dc158fcbd100da63d1ca704be8bd0893f89f4893f89f4893f8bd0893f36e3163d3885b8bc877b36bc74c2113cba4ad73dde45e23db23f1dbeba8e1abe96f9a7bc02400b3defd82d3c69f23ebc0a5ec63d1e3212befdbcca3dc6e311bed2f6893f2cb7893f2cb7893fd2f6893f32fd183dce02fdbce49a01bbb014063ca288de3de0cbfd3d349f2abebbcd1ebe405ea6bcf9b5d53caf9f923c364d25bcea8dc63d053d11beed1ccd3d3fda12be77f3893f4660893f4660893f77f3893f569d423d487524bda6f0263cc3aa70bbcfffb03d550e073ee7f434beb3f50abe81b90bbce04a793cec16e33cf78391bcfa99bb3d8afb0bbe26aec43dbdcc0dbe600f8a3f1e48893f1e48893f600f8a3f98e6353d21dc25bd968a56bb8b9b2d3c17bd063e4ef6143e7e8b3cbe4e7534beb4da05bdafcf113d7769813c37b1e0bb0486de3d28e31bbe76e8e83d2b3d1ebec99a893fcde4883fcde4883fc99a893faabf4b3d5b2758bdf9e57d3c424b8cba05d8f23d737b253e05a24abeffbe28be835ce8bc83d5bb3cf481a83ca8fc05bb3d8ec23dc7bb0fbe6672d43d092f14be5def893f9688883f9688883f5def893fa85da13d5cf0a2bd50c53b3d66a008bdfd52623de999443e646a6bbef8fad7bd31a9c03b5a92bcbb1683423d028cf5bce7dba03dcea7febd179bb43d2f9e06beb5758a3f4873883f4873883fb5758a3f9d896e3db35e8ebd3937903c2923873bcdd50f3e0912393e1b355bbe86ce41beac263bbdbb570a3d36ffab3c540a413b0d76ec3d32e824be96e3013e35be2bbe016b8a3fed40883fed40883f016b8a3f07f78f3df2c5a9bd6d04523dc9f5eabcb542ad3d850b4a3edbfb64bec1810cbebaf2dabc0ee1663c3fa4833ce3c22a3ccadfbd3d50ef0ebe6b4ce83de6f620bef5b98b3fcae3863fcae3863ff5b98b3f22612a3e752133bee429073e7674f9bd1beab7bdfebaab3e401fb3be3703e33c859c953d5a9293bdf058d33d3838a7bd0ca3603d96f3d2bdc6f4b33d05980abef6988d3ffc49853ffc49853ff6988d3fc758123d74645cbc338115bc528a68bb138aab3d6361ae3dc7ac06be9b4403beed1c4bbc723d0e3d63960dbb683b29bc8746a13d852efdbd728c9f3d5748febd2b4a8a3f5b828a3f5b828a3f2b4a8a3fdf1a103daccfb8bc49f889bb0376e93a1a24b53d3920d63d715a16be44a30bbef18384bcc322fa3c1ac48d3b51b004bcbaa2ad3dac5a00be5e3ca63de3bd05bef05f8a3fbe078a3fbe078a3ff05f8a3fc334723d202158bdb042f93c81cad4bcbe9b9d3d14c3153e775b42be5043fabdb487debabe503f3c391dcd3c240eb2bc74eda33d435bf4bd4374983dff9dfebdc7368a3f6d7a893f6d7a893fc7368a3fb6e5243d457cc8bc4ac138bc5cdeed3bed24cd3dd1abe73d4d5a1dbedc3418beb76a8dbc85a7003daba53e3c3ed953bcabacc33d3ec910beb497cc3d241013beed238a3fc290893fc290893fed238a3fe33b3a3dc2451ebd50b10a3bab493b3b9396c03df1a80c3e806e33be13c114be095f4ebc137a8d3c648acc3c02c876bc4b82c23d135f10be3dcad33da7f514bed35f8a3fa5ec883fa5ec883fd35f8a3f8f65743d9aa04ebd1409843c7e2452bc73df863d1c90223ea33d4dbeb813f2bd401dd63b47b562ba008a323d2f7cfbbc11bebc3d3c240fbe7d8cd73da75714bef68a8a3f59ae883f59ae883ff68a8a3f93ff543d18e73abd31fd46bb4c72f43bd4b2f53dc466203e11bc40beb91330becc1fcdbc8e59d83c87f5ab3cf5bf1dbcbf2ed63db10f1bbe4598f73d555422be77618a3f891b883f891b883f77618a3f7bd78f3d9e5790bdf550cb3cca5d6ebc43bead3d9a47483e988d60be334813be0ee006bc4ef3013a7a001b3dde507bbc1b6db33dd8540cbe2868ea3d21131abe8e7a8b3fc3dc863fc3dc863f8e7a8b3f0256d23d5ea0cdbdae136a3d987a4bbd4c4df53badf9793efbb889be5a7b92bd9982173dc14f20bd7aec983df86f52bd402b963d0af4febdd6a2db3dec7c13bed54a8c3f7f61863f7f61863fd54a8c3f9e93a03d5a68b7bda117e73c60d3f3bb56c4d23dbe105c3e4b9d6dbe98a72cbe7594c5bcf0c5293c5bce103d2d1fefbb37cfd73dcfe31fbe9c70103e592c35be61848c3f1716863f1716863f61848c3fc467f33df08302bec5b39d3d4a2b77bd0f2704bc5a9d943edbb590be21e9a2bdef00763c2689f0bc8401383dac974dbcba1c5b3dc8c8ddbd5505ff3d307624beb519913f5367813f5367813fb519913fad162e3ea59d2dbeb677e73d2e46debd7d393cbebaaee13ef562cfbe4b85853d0535dd3d9775dfbd87a7c93d227889bd76f4ecbbb5aa59bd553be93dcccb1ebe02cb963f268c783f268c783f02cb963f4419133d34fe6abc7a7e26bc112200bbf007a63db374ad3db41c03beccb003befbba2ebc74be0c3d72b236bbfeb033bc89e9a23d990cfabd938d9e3dc71101be53758a3f9d5c8a3f9d5c8a3f53758a3fa7292c3d9e0ceebc008c9839afe691bb4c3ab83d6e06dd3d970718be0fb40ebe633a35bcb657ed3c72a7a73b7adf44bc1024ac3dd883f6bdfd1f9e3d126a05be9e628a3f72088a3f72088a3f9e628a3f984b7a3d38aa2fbd31f1243c908fa0bc07b1ab3da68b173e69e541be635306be661d993bbbfa2d3c7e01c73c792cd1bc4d05af3d5c64fcbd5b97b83de4ba10bedb918a3f6b43893f6b43893fdb918a3fe4342d3db29bcfbca51b44bc6c0bd53b6485c43d8679ea3d27cb1cbecced15be232b72bcab40f23c30ca483cd43c63bc2536c13d5c8110beb6b2d03d5b2a14be61538a3f9b62893f9b62893f61538a3f4360513dcc832abd8b649c3abdf27f38cef7b23d946b143ea84d36be486e12be4357e1bb8d71293c24e6ee3cfe978ebc299dbd3d01c610be3d55e03d8ed917be14ce8a3f3e6e883f3e6e883f14ce8a3feda7823d052954bd0051473cdacf59bc89df7a3d92852d3edaa250be8cbef5bdbe50353cde1903bc0bad453d35db01bdfab4b93d6f9c11be15d2e93d49ec18be19348b3fa3e5873fa3e5873f19348b3fb8c1653dedb245bddcbec4bb3f570f3c9183e13da589273e292041be3ee02cbe388c9abcd6d5a13c007cce3caf174fbc3835d23ddb2a1cbe53c8033e7d3e27be71038b3fbe6e873fbe6e873f71038b3f8edba03d925f9cbd5604b43c30827abcdbe18e3de980583e2f2064be20a410be79f7bf3abced56bc6c4f3b3de50d94bc7ca2a63d64680bbe2660023e0a5020beeacb8c3f745e853f745e853feacb8c3f3b4bce3d0149c1bdd3182b3de81923bdacafd43be65c7f3ec7a084be9399afbdd3091b3dd80439bd0f53963d661235bd60518d3d7e0d01be2215003e3fd21cbe71ec8d3ffa7a843ffa7a843f71ec8d3ffb36aa3dd51cc0bd3407953c6d20d73af5c6b03dbc2a6b3e88056cbe40852cbe981168bc6df4ecba69622e3dfa5e39bcdc1cc73d1d231ebe7261223ea33b40beda868e3f47ff833f47ff833fda868e3f8d72023ef1080abeb9e0773d89333ebd7a6310bd3184a83e7dde8fbee793c0bd4452fb3c77fb4bbdd8d34a3dee4e2bbc671ddb3cc0efb3bde69f133e4d4730bebf2b963fb05f783fb05f783fbf2b963f470f293ed9cb27beffbc973dc83290bd201932be9c11e63e6fb8b6be789dc2bb04cbb83dc620c9bd7f0a683d96a593bc63f484bdcf07d83b153ae93d50311cbebd729d3fcc236b3fcc236b3fbd729d3fb1020e3dc3da5fbcd18e38bc941705bad079a53d4546aa3d532002be6cb402be1d3c3abcdb6d103d53d56fbbdef828bc7c8aa13d9782fabd1e1da13df46101be82798a3f455b8a3f455b8a3f82798a3fbebf223d043fe7bc85714abb228224b97b5db43d9863db3d28a715be6fc70dbe26ab16bce496e63c493ea93b722958bc7825b13d0413fcbd95f9a73d40f809be996c8a3fd3fe893fd3fe893f996c8a3ff4ee823d441a44bdb229b6bb5e1465bbc09da83dcccc203e377a41be26650ebe18d20ebba188553c7ff1d43cbf9fbcbc8159aa3d03daf8bd8510c13dcfad13be60908a3f686a893f686a893f60908a3faaef2c3d00cacebc58d163bc5cba043cfa7abe3d01aee93d71391abebef614be9bf156bc5db4eb3c9714473c841b6dbcf55dbf3d3e8810be2129d53d7f6415be0a858a3f4a30893f4a30893f0a858a3f0da15c3d53a126bd67ca5bbb1b719db9baa0ac3df3f5153e179632befdec13bedf67a0bbe296e13b0061f53ca44a87bc1a96b93d645f13becf55ee3def6e19be2f2a8b3f6f06883f6f06883f2f2a8b3f6a34803d724c47bd5f5b983b0b7719bc2aad823d518c2e3e843f4abe335903be8fb5203c9cb251bc0718493da1dfd9bc934ab73d4ee716be3b6a003e39ee1cbee7be8b3fb842873fb842873fe7be8b3f318e743d68c942bda23c4bbc40692d3c1088d43d39f32a3e8b5b3dbe09a12dbe56ba78bcbe107b3ca879e03c970e60bccc3ace3d78501ebe00fe0c3eaf0e2cbe76bb8b3f11ab863f11ab863f76bb8b3fb8daac3d80f39dbde0cb563c0b4950bc01ec823d9d085d3e64355bbe38ed17bea324dc3ba7f0b2bc5c07433d9be282bca55c9c3d90d20dbe4548123e60c226be8be28d3ff31b843ff31b843f8be28d3fbe50c73da55bafbd4ee0cb3c868bf2bc46f9a23c5174773e8b0373bedd07e4bdc7cf093da4db41bd36da8b3dbe140abdfde28c3d9e4a06be0bfa113efcfd25bee3fb8e3feb13833feb13833fe3fb8e3fefcaac3df978bdbdc96e86bad6408f3c3d9f9b3d7055733e100e64be79e231be805e26bc57dc14bc6c09433d88ee4fbcaed0b83df4cb20be17de373e3acd4abe2434903f8b36823f8b36823f2434903fa381023ed6b709be322d153d1de0c7bce3c918bdbb7db03ed0ef85be910103be4267213d2fc186bd09e0493d24c606bb88c1563cb5f6a3bd765b263ed77439be32a9983f04f5723f04f5723f32a9983fc59c223e0cd827bec461723d742b55bdf05810bec3d0e43e59f4a3bedb1596bd87d9963d0156b8bd1e0d2b3dff94bd3a77a185bd66bcce3c916fcd3d6f3816beec3e9f3ff09b663ff09b663fec3e9f3ffb360f3dd9b15dbc02c95abc8ca78e3a0b94a33d2afda73d6662ffbdd81903bea02a34bcb441123d2b598fbb69de2abc4c36a43d3daefbbdabaca23db0e202bea6638a3fa0748a3fa0748a3fa6638a3f20232b3d0fdcdbbc2f8439bcde68833b2932b43d69abde3d5a1e14be1a1210be4b4111bcb71cf03c266e583b740257bc806dab3db9f7f5bdf3f9a73d6e0b0abeb43d8a3fc02e8a3fc02e8a3fb43d8a3fc9c5923da82707bd07c3d6bc38ea04bc55e6ab3d5b971d3ee08439be07ab13be7fe1373b9ad60a3cf97ecf3c864ebebc742db53d673e02bec802d83d275f1dbeb88a8a3ff785893ff785893fb88a8a3f59d42e3d9df5c1bca1028cbce1f2143cf047bb3d2bc7e53db5c816bedf0015be743d4abc5553e83c97e5383c172d63bcfc3fbd3d5dc510bed989db3d081b17bef7b48a3f9301893f9301893ff7b48a3faa65603d76ba1cbdd03522bca1b4003ba701aa3d03d7123e1aa929befc2c17bea03f90bbb125d63be9d2da3cba1363bce320b53d9dc513be2c47fa3d71031cbe9e868b3f4797873f4797873f9e868b3f5b707d3d485a31bd735a78bb9515e3bbe32c943d871a2a3e68dd3ebef73510be611ef23b00e67fbcb17e413de455a9bc80b1ba3d75141dbeb4b30b3e269122be74158c3f60bf863f60bf863f74158c3f7e157d3d845f38bd3f23b2bc2caf743c4eaec93dae93293e0c2835be91df2ebe8ce84bbc401b4a3ce2c6e43cb41e61bc7d32c93da5c220bedfe0163e4d8f30bef0468c3f6b12863f6b12863ff0468c3fad23ad3d88b48fbd6b0e0cbb0fd2babb8ff7813d5dfb573eb8434abeb9d821be5931eb3bdb13c5bcfe96333d639b35bc85c2983d433713be07df213e41fb2cbe36978e3f482c833f482c833f36978e3f71a9bf3d75ed94bd7733003c4eeebabca814193d80a9663ed17e56be19570bbeb048c83c32c93dbd8c08793da16fa8bcb02f8e3d49f810bed719243e37922abe23828f3f550b823f550b823f23828f3fb58fb33dcbe0bbbd647dbebc63100c3d5f798d3d52f7783e5f1657bed10b3dbe59ac02bcbd5257bce125453daa6234bc57c8a43db8cf21be53e94c3e87e152be58b2913f9e93803f9e93803f58b2913f99c7013ecba60abe8a86813ca40380bb1afcd1bc7d25ad3e0f176ebee0b725be45851f3df6659abd61eb483dc23a003c92ec1f3ce170abbd0705363ef7763dbebaba983f132b723f132b723fbaba983f991c093ef2b30dbe7ed72d3d84f621bdfe6a9cbd5e63d23e434794beeb9c01bee969703d2ad9c1bdfbe25c3d34e8553befdb90bcbdc0acbc0747fc3d980124bed0b69c3f79cc693f79cc693fd0b69c3f0b350f3d8d8c6abc0e5b5bbcd014dd3a3ceea33d8491a33d66fdfbbd03c802be8bde5bbcbcf41c3d66cad8bb0bb909bc608aa83d3ddbffbda203a93de00106beee6b8a3f2d718a3f2d718a3fee6b8a3f7385383d4f08cbbc45d2d1bc0b484b3c2facaa3d3e65c53d6b2605be43270dbe19af3fbc187c083d9783823a18e350bc2e38a83df0aa00be0188bc3d2e030cbe6bbd893f41aa8a3f41aa8a3f6bbd893fe200653d7f7bbebc3b72c0bcfc1fc5bb9760b43df350153ea9d729be9ae71cbe3577b93a959d1abb57ecd93ce51260bc20f3c53d665512be18faf83d5f8524be2fb78b3f402d883f402d883f2fb78b3fc6742f3d3aa0b8bc23cda1bcf796273ca127ba3d00cbe13d1d2213bec41c16be672c43bc1f40e93c70422b3c950b5fbcd433bc3d4ea111be6bcfde3de42c17beccbc8a3f11fd883f11fd883fccbc8a3f3e29603da79ff4bc1420a9bc031a763b88c3ab3d67540b3e441f1ebe3ea01abe506cbabb9ab2f73b83eab33c3dbf22bc7dcfb03df0d616be266c043e68231dbe9bb28b3f7156873f7156873f9bb28b3f93607c3d00b607bd6df588bcf22f96bb0aa6a13daf64213e8e632ebe159d1abe5a6a4e39e13481bc76032d3d26fb2ebca0aeb13d3b3424be572d173e26eb20be08468c3f2f3f863f2f3f863f08468c3f80e6823d61b526bdca0803bdf4da953cbed5c43deb74253ef5342bbed70132be31ff3ebceb96423c0a7eda3ceb8551bc905cc43d898c23be10171f3eb81333bedba98c3f00a5853f00a5853fdba98c3f9cf0a93dbb8057bdbbc9cfbc07b9123a569f8c3dece8473ee89c32beafa22bbec5be123b2bbfacbca73c173d13c894bb7ce4953d891c1ebe3d41333e714a2fbec4cf8e3f98a5823f98a5823fc4cf8e3fa85eb33dd2c84cbd6bd389bc35e088bce8096c3dd5f04d3ebac836beb2bf1fbeee702e3c73b126bd9e8e4c3d3b25c1bb62668e3d59481dbe265b353eaca22abec6568f3f8877813f8877813fc6568f3f6cbabf3d0634adbd86ab62bd25b8523d8d50843d8338723e188e39be10524ebea9ebc8bb6af964bce0b2313d2417e9bb91498d3de10c22be9f5d5e3e197056be8f9d923f7c007f3f7c007f3f8f9d923f6585f03d8b6ddcbdff05c4bc409d813c0b1b493ba509943ec4c03fbe490c3bbef8dccd3cb57e90bdcdbb453db00c673c3bf28b3cea03eebd17aa563ec1193fbe1aa8963fb745753fb745753f1aa8963f8229db3d3068b8bd27b4453c51750ebd4db519bcf4efa63e30cd6cbea81421be4f7c0c3d16dbc7bd682e893dffdd473cb3fc893c0802dfbd610f413ef13128be5cfe983fe0226f3fe0226f3f5cfe983f3b580f3d63365bbc117e6bbcf6bde13adf81a83d78bea83d809affbd20fd05be91120abccee81c3de191d6bb8e1c5cbc95eaa33dafb4fbbdb049a33dccc602bede6a8a3f26718a3f26718a3fde6a8a3feaaa3c3df8fedbbcabf4d1bc38055c3caadca73dc4f2bc3d736b00be182d0cbe686c54bc18e8093def81853a1c6743bced2daa3d521305be5265c63dee620dbe97a3893f86c18a3f86c18a3f97a3893f3617643db2debebcafb1bebc84f9c8bb8aeec53dd691f93d869a12bed16624beb5365fbc93ed28bbe82ddb3ca28cb73af48bb43db2dd29befd54153e15c31cbe49b68b3f5429883f5429883f49b68b3fb7732f3d00c8a1bcbda1b8bcfb8c273cdf33bc3df4cbde3dac9f11beb62c17be100d5fbcc73ce93cc94c2b3c022e43bca227ba3d4c2013be53c7e13da51c16bee4bc8a3ffffc883ffffc883fe4bc8a3f972e603da827a9bc4eaff4bcee71763b61cfb03d2a6b043ebcd516be69231dbeb6c522bc42d8f73b42e7b33c007bbabb37c3ab3df01d1ebe7b530b3e62a01abe6bb28b3fa256873fa256873f6bb28b3f2f637c3df90f89bc7bb207bdf50696bb73adb13dbc2d173efb3324be98ea20becdfd2ebcfe3981bcb6072d3d6c6e4c3997a4a13d4d652ebede67213e289d1abefa458c3f2d3f863f2d3f863ffa458c3f99e6823d040903bd45b526bdd0da953c945cc43d11171f3e8e8c23beb61333bed08551bce097423cb87dda3ca0ff3ebcc6d5c43dea342bbee374253edf0132bedba98c3f00a5853f00a5853fdba98c3fb1f0a93dedc9cfbcae8057bd2db1123a7ce4953d4041333e8e1c1ebe6f4a2fbe01c994bb1dbfacbca83c173d35c0123b449f8c3de19c32bee4e8473ea5a22bbec4cf8e3f99a5823f99a5823fc4cf8e3fa85eb33d6bd389bcd2c84cbd35e088bc62668e3d265b353e59481dbeaca22abe3b25c1bb73b126bd9e8e4c3dee702e3ce8096c3dbac836bed5f04d3eb2bf1fbec6568f3f8877813f8877813fc6568f3f12babf3d89ab62bd3734adbd34b9523dbc498d3d9c5d5e3ed30c22be397056be7e16e9bbf5f664bc66b2313d40edc8bb0151843df78d39be5538723e3e524ebe8d9d923f80007f3f80007f3f8d9d923f8285f03d7706c4bc5f6ddcbd899c813cd3f28b3c0baa563edb03eebdcc193fbe4f0c673c9b7e90bda2bb453d13ddcd3c491e493bbdc03fbe9f09943e510c3bbe1aa8963fb845753fb845753f1aa8963f5929db3dd1af453cb567b8bdd9740ebd61fc893c500f413ede01dfbdec3128be26de473c18dbc7bd652e893d517c0c3de4b519bc4dcd6cbe02f0a63e9e1421be5bfe983fe2226f3fe2226f3f5bfe983f4e360f3d3cc75abc64af5dbcbe9d8e3ab836a43da2aca23d97aefbbdbce202bebcdf2abcaf41123d2d548fbb7b2b34bc3794a33daa62ffbd20fda73dc71903bea8638a3f9e748a3f9e748a3fa8638a3f43232b3da58339bc70dcdbbce067833b7a6dab3dfdf9a73dc7f7f5bd660b0abe430257bc381cf03c3772583b874111bc1c32b43d601e14be5fabde3d091210beb23d8a3fc22e8a3fc22e8a3fb23d8a3fc9c5923d07c3d6bca82707bd38ea04bc742db53dc802d83d673e02be275f1dbe864ebebc9ad60a3cf97ecf3c7fe1373b55e6ab3de08439be5b971d3e07ab13beb88a8a3ff785893ff785893fb88a8a3f3ad42e3d7c028cbc97f5c1bc27f3143cfd3fbd3de589db3d60c510be0b1b17bef32c63bc2c53e83c52e5383c2c3d4abcf647bb3db2c816be2fc7e53de60015bef8b48a3f9301893f9301893ff8b48a3f1865603d673222bc84bb1cbd9ec0003b0e21b53ddd46fa3d6fc513be8c031cbea61463bcf928d63bf4d1da3c4b3d90bb9901aa3d0ca929bef6d6123ef52c17be9c868b3f4897873f4897873f9c868b3f696f7d3d0f5d78bb465931bd9a14e3bb33b2ba3dc0b30b3ed4141dbe2e9122bee856a9bc5de57fbc397f413d0a1df23b092d943d60dd3ebe731a2a3efe3510be75158c3f60bf863f60bf863f75158c3f6f157d3de322b2bc9b5f38bdfcae743c6732c93de1e0163ea2c220be478f30be6c1e61bc531a4a3c33c7e43c80e84bbc45aec93d152835beb393293e88df2ebef1468c3f6b12863f6b12863ff1468c3f8323ad3d0c0b0cbba1b48fbd9ccfbabb97c2983d08df213e473713be46fb2cbed79a35bc1b14c5bc1b97333d4c30eb3ba7f7813dbb434abe63fb573ec7d821be36978e3f482c833f482c833f36978e3f7ca9bf3db033003c83ed94bd5deebabcc12f8e3ddf19243e54f810be3d922abec66fa8bc47c93dbda908793dc048c83cae14193dd07e56be84a9663e1c570bbe23828f3f550b823f550b823f23828f3f818fb33db77dbebc9ae0bbbd98100c3d64c8a43d49e94c3ec2cf21be7ae152be1a6334bcde5257bce125453ddaab02bc05798d3d741657be6df7783eaa0b3dbe58b2913f9f93803f9f93803f58b2913f99c7013e7e86813cd4a60abe3c0280bbd2eb1f3c1905363efc70abbdf2763dbe4d3b003c16669abd9beb483d2a851f3d0dfcd1bc19176ebe8325ad3ee4b725beb9ba983f152b723f152b723fb9ba983fa91c093e34d82d3d1ab40dbee0f621bd97db90bce846fc3dd9c0acbc8c0124bee0e6553b1cd9c1bd02e35c3dd269703dfc6a9cbd394794be5963d23ef89c01bed1b69c3f77cc693f77cc693fd1b69c3feb030e3db08d38bcece15fbc030c05bab189a13db31ca13db181fabdc76101bef1f628bcb86d103da0dc6fbbdc3b3abc9a79a53d382002be7646aa3d82b402be80798a3f485b8a3f485b8a3f80798a3fbebf223d85714abb043fe7bc258224b97825b13d95f9a73d0413fcbd40f809be722958bce496e63c493ea93b26ab16bc7b5db43d28a715be9863db3d6fc70dbe996c8a3fd3fe893fd3fe893f996c8a3fd4ee823dbe31b6bb431944bd601065bb7659aa3d5810c13dd7d9f8bdc9ad13be879fbcbcf98a553c5bf0d43c16d40ebba69da83d717a41be05cd203e19650ebe60908a3f686a893f686a893f60908a3fbbef2c3d31d263bc0fcacebce6ba043cfd5dbf3d2429d53d3c8810be876415be6d1b6dbc9fb4eb3c5814473cebf156bcfb7abe3d6e391abef3ade93dbcf614be09858a3f4c30893f4c30893f09858a3f9ca15c3da7d05bbba5a026bd6bdb9db9e095b93d1f56ee3d995f13bec56e19be484a87bcdc92e13b5a62f53c9f6aa0bbcba0ac3d2f9632befef5153efaec13be2f2a8b3f6f06883f6f06883f2f2a8b3f6a34803d5f5b983b724c47bd0b7719bc934ab73d3b6a003e4ee716be39ee1cbea1dfd9bc9cb251bc0718493d8fb5203c2aad823d843f4abe518c2e3e335903bee7be8b3fb842873fb842873fe7be8b3f1b8e743d7f3c4bbc67c942bd7b692d3ce33ace3d01fe0c3e7b501ebeb90e2cbe090f60bca0107b3cb279e03cdcb978bc1288d43d8c5b3dbe39f32a3e0aa12dbe76bb8b3f11ab863f11ab863f76bb8b3feddaac3de6ca563c77f39dbdfd4950bcb25c9c3d3c48123e88d20dbe65c226bef1e282bc5af0b2bc4407433d7625dc3b1eec823d6c355bbea7085d3e49ed17be8ae28d3ff41b843ff41b843f8ae28d3fae50c73d78e0cb3ca85bafbd698bf2bcfee28c3d08fa113e9f4a06bef6fd25bebc140abd87db41bd2dda8b3db7cf093d4cf9a23c770373be3b74773edc07e4bde3fb8e3feb13833feb13833fe3fb8e3ff5caac3db47086bafc78bdbdeb408f3ca7d0b83d1ade373eeecb20be41cd4abe8eee4fbc75dc14bc6b09433d565e26bc3f9f9b3d1a0e64be7855733e79e231be2434903f8b36823f8b36823f2434903fa281023e4e2d153ddbb709be26e0c7bc80c1563c7b5b263ebef6a3bdd77439be23c606bb35c186bd11e0493d4567213decc918bdc9ef85beb47db03e900103be32a9983f03f5723f03f5723f32a9983fc09c223ee061723d0cd827be7e2b55bd63a185bd836fcd3d09bcce3c643816bedf92bd3afc55b8bd370d2b3d7dd9963def5810be59f4a3bec2d0e43ed81596bdeb3e9f3ff29b663ff29b663feb3e9f3f9018133df18026bcc4f96abca21e00bbebe9a23ded8d9e3d060dfabdef1101beceb133bcc3be0c3d59b436bbccba2ebc0f08a63dc31c03bea774ad3dc9b003be55758a3f9b5c8a3f9b5c8a3f55758a3f73292c3d0ba598395c0ceebc19e891bb3324ac3dc11f9e3db783f6bd136a05be88df44bce257ed3c4fa6a73b123a35bc3a3ab83d930718be8d06dd3d1db40ebea1628a3f6f088a3f6f088a3fa1628a3f564b7a3dc4ea243c62a92fbd4e8da0bc4905af3df497b83d8b64fcbd1fbb10be292cd1bcd9f92d3c4501c73c281f993bf3b0ab3d48e541bea78b173e805306bedd918a3f6943893f6943893fdd918a3fd0342d3d311b44bc189ccfbcd70cd53bfd35c13dc5b2d03d5c8110be502a14bec03b63bc2640f23c2cca483c0c2b72bc2485c43d15cb1cbe8b79ea3dc2ed15be62538a3f9b62893f9b62893f62538a3f2660513d99589c3a7e832abdcc578038239dbd3d4b55e03d04c610be8fd917beba978ebce471293cc2e5ee3c8357e1bbc4f7b23da04d36be9a6b143e4f6e12be15ce8a3f3e6e883f3e6e883f15ce8a3fd1a7823da750473cfb2854bdc5ce59bcf7b4b93d10d2e93d709c11be44ec18be18db01bda11903bc08ad453d1550353c52df7a3ddca250be96852d3e76bef5bd19348b3fa3e5873fa3e5873f19348b3fe0c1653d32bfc4bbfdb245bd40570f3ce034d23d3dc8033eb92a1cbe5d3e27be5f154fbc1ad6a13c3d7bce3ce48c9abc8683e13d1f2041beb189273e52e02cbe73038b3fbc6e873fbc6e873f73038b3f7cdba03d5804b43c845f9cbd18827abc5aa2a63d3560023e71680bbefd4f20be640d94bc66ee56bc8c4f3b3d54f1bf3abce18e3d272064bee280583e11a410beebcb8c3f735e853f735e853febcb8c3f3b4bce3dda182b3d0249c1bdec1923bd43518d3d2115003e760d01be3cd21cbe351235bde10439bd0653963dc7091b3dc2afd43bcda084beed5c7f3e8e99afbd71ec8d3ffa7a843ffa7a843f71ec8d3f1737aa3de705953cf91cc0bd6636d73aa31cc73dab61223efd221ebedd3b40bee95d39bc3d09edba15622e3ddd0e68bc8ec6b03d52056cbef32a6b3e76852cbee2868e3f3eff833f3eff833fe2868e3f8b72023ec2e0773df1080abe88333ebd6c1ddb3ce49f133ebeefb3bd4c4730bef74e2bbc78fb4bbdd8d34a3d4c52fb3c7d6310bd7ede8fbe3284a83ee593c0bdbf2b963fb05f783fb05f783fbf2b963f580f293efbbc973debcb27bebe3290bd7bf484bd263ae93d1609d83b58311cbe87a593bccf20c9bd7f0a683d0acbb83d221932be67b8b6be9a11e63e1a9fc2bbbe729d3fca236b3fca236b3fbe729d3fc558123dcc8015bc65655cbc228868bb8846a13d798c9f3d9b2efdbd4948febd163b29bc323d0e3dc6900dbba11d4bbc048aab3dbaac06be5761ae3d9a4403be2a4a8a3f5c828a3f5c828a3f2a4a8a3f311a103dc1f489bb0fcfb8bc1a77e93a9ca2ad3dc33ca63dd65a00bedebd05be23ae04bc8221fa3c7ac68d3b7f8484bc7424b53da05a16be3220d63d3ea30bbeee5f8a3fc0078a3fc0078a3fee5f8a3f5634723dfd42f93cca2058bdc1cad4bc6ceda33da373983d055bf4bd869dfebdf40cb2bc2a553f3ce31bcd3cebaadeba439c9d3da05b42be28c3153ea143fabdc6368a3f6f7a893f6f7a893fc6368a3fd9e5243dd6c038bc827cc8bc5added3bb5acc33da497cc3d3ac910be261013be5ada53bcc5a7003da4a53e3ca96a8dbc1e25cd3d655a1dbee1abe73de23418beed238a3fc290893fc290893fed238a3fbd3b3a3d82b20a3bca451ebda74b3b3b6c82c23d2bcad33d0e5f10beb5f514be41c876bc3a7a8d3c538acc3ced5e4ebc9b96c03d806e33bef0a80c3e17c114bed35f8a3fa5ec883fa5ec883fd35f8a3fa065743d8407843cec9f4ebd682452bcfabdbc3d818cd73d2f240fbeaa5714bed97bfbbc509c62ba6489323de51dd63b83df863daf3d4dbe2e90223ed513f2bdf58a8a3f59ae883f59ae883ff58a8a3fb4ff543d43fa46bb68e73abd6b71f43b422fd63dc498f73ded0f1bbe965422bec1c11dbc5559d83c3ff6ab3c781fcdbcd0b2f53d11bc40beba66203ea81330be77618a3f891b883f891b883f77618a3f77d78f3d1951cb3ca75790bdae5d6ebc206db33d1868ea3dd0540cbe23131abe17517bbc61f9013a62001b3de1df06bc45bead3d998d60be9947483e334813be8e7a8b3fc3dc863fc3dc863f8e7a8b3f1b56d23dca136a3d73a0cdbdc07a4bbd312b963dcba2db3df7f3febde77c13be017052bdc24f20bd78ec983da682173da14df53bfab889beacf9793e617b92bdd54a8c3f7f61863f7f61863fd54a8c3f6993a03d1219e73c2368b7bd7dd9f3bb84cfd73d5e70103ef6e31fbe1b2c35be0e22efbbcdc8293cb8ce103def95c5bcc0c4d23d829d6dbe88105c3e62a72cbe5a848c3f1f16863f1f16863f5a848c3fd167f33dceb39d3df58302be5c2b77bdb81c5b3d5d05ff3dccc8ddbd327624bec9974dbc5b89f0bc9901383d2501763cde2604bcd9b590be589d943e29e9a2bdb519913f5267813f5267813fb519913fa9162e3eb377e73d929d2dbe4646debda9f3ecbb483be93d76aa59bddccb1ebe257889bd8c75dfbd5ca7c93d2735dd3d77393cbef762cfbec0aee13e2d85853d05cb963f228c783f228c783f05cb963ff145153d9d1b23bc3d1b75bc61cddcbad7a3a13ddb19a23d40affcbd8dc500be943238bc083c0f3da399c8bacf0a48bcd203b33d029608befdfcb33dabce07be81558a3ffe648a3ffe648a3f81558a3f3e440e3dd4a05cbbf927b1bcae61353afed3a83d82d6a23d315f00bece8b01be99e4cbbbc30e073de5ec333b7a9b9bbc86aebf3d76a312be4a6dcc3def0310be4b5b8a3f9a0c8a3f9a0c8a3f4b5b8a3f4ff50e3d6fa5043cc39606bd0fa376b97c11ad3d210da63dd558fcbd30a704be1d434dbbf201cf3c097a0f3c5cf199bc6b95c73d1f932bbebb30fb3dc73d11be8bd0893f89f4893f89f4893f8bd0893f24e3163db27b36bcb484b8bcd6c1113c1c5ec63dfabcca3d273212bec3e311be9cf23ebcf23f0b3d5cd92d3c96f9a7bcbd4ad73db33f1dbeda45e23db88e1abed2f6893f2cb7893f2cb7893fd2f6893f62fd183d329c01bbb402fdbc0214063cc68dc63dfd1ccd3d093d11be2fda12beec4c25bce1b5d53cac9f923c545ea6bca988de3d359f2abee3cbfd3dbecd1ebe77f3893f4760893f4760893f77f3893faf9d423dc0f2263cd27524bda9af70bb119abb3d1eaec43d92fb0bbebccc0dbe018591bc8c49793c2818e33cbeb80bbce8ffb03de0f434be4b0e073ebbf50abe600f8a3f1e48893f1e48893f600f8a3f64e6353dbd8b56bbd8db25bdb99b2d3ce085de3d27e8e83d10e31bbe0e3d1ebe44b3e0bb90cf113daf69813c64da05bd22bd063e838b3cbe48f6143e517534bec89a893fcfe4883fcfe4883fc89a893faabf4b3df9e57d3c5b2758bd424b8cba3d8ec23d6672d43dc7bb0fbe092f14bea8fc05bb83d5bb3cf481a83c835ce8bc05d8f23d05a24abe737b253effbe28be5def893f9688883f9688883f5def893f965da13d3ac53b3d4cf0a2bd4aa008bdf6dba03d249bb43ddea7febd359e06befe8bf5bc7a92bcbb1883423d34a9c03bf252623d676a6bbeec99443ef2fad7bdb5758a3f4873883f4873883fb5758a3fc1896e3d1237903cbd5e8ebdc123873bf975ec3d9be3013e2ee824be38be2bbe770c413ba5570a3d19ffab3c9c263bbdcad50f3e19355bbe0b12393e88ce41be006b8a3fee40883fee40883f006b8a3f00f78f3d6204523dedc5a9bdadf5eabcccdfbd3d684ce83d4fef0ebee6f620bef6c22a3c41e1663c2aa4833ccaf2dabcb142ad3ddbfb64be860b4a3ec1810cbef5b98b3fcae3863fcae3863ff5b98b3f2c612a3ee629073e742133be8c74f9bd03a3603dcef4b33daff3d2bdfa970abe4638a7bd689293bd0659d33d889c953d0ceab7bd471fb3be00bbab3e4b03e33cf5988d3ffd49853ffd49853ff5988d3f